我对从这段代码中得到的结果感到困惑。在一个 dll 中,当初始化静态变量时,计数器会递增。然后当 main 执行时,我读取了这个计数器,但我得到的是 0 而不是 1。有人可以向我解释一下吗?
在我的动态库项目中:
// Header file
class Foo {
int i_ = 0;
Foo(const Foo&) = delete;
Foo& operator= (Foo) = delete;
Foo()
{
}
public:
void inc()
{
++i_;
}
int geti()
{
return i_;
}
static Foo& get()
{
static Foo instance_;
return instance_;
}
Foo( Foo&&) = default;
Foo& operator= (Foo&&) = default;
};
int initialize()
{
Foo::get().inc();
return 10;
}
class Bar
{
static int b_;
};
// cpp file
#include "ClassLocalStatic.h"
int Bar::b_ = initialize();
在我的应用项目中
// main.cpp
#include <iostream>
#include "ClassLocalstatic.h"
int main(int argc, const char * argv[])
{
std::cout << Foo::get().geti();
return 0;
}