【发布时间】:2017-08-29 03:00:16
【问题描述】:
我读到静态全局变量的动态初始化如果它们在同一个翻译单元中,则保证按照定义的顺序发生。那么我想知道当一个静态全局变量被同一个翻译单元中定义在它之后的静态方法使用时,是否保证它必须是动态初始化的。
//Foo.h
class Foo
{
public:
Foo(int i) {m_i = i;}
int m_i;
};
//X.h
class X
{
static void doSth();
static Foo foo;
};
//X.cpp
Foo X::foo(2);
void X::doSth()
{
//Is it guaranteed that foo has been properly initialized here?
std::cout << foo.m_i << std::endl;
}
【问题讨论】:
标签: c++