a.cpp
static Foo fooobj;
void Usefoo()
{
foooobj.somefunc();
}
b.cpp
static Bar barobj;
这是构造函数Bar
Bar::Bar()
{
Usefoo();
}
这会导致静态初始化订单惨败吗?如果是,我该如何解决。我想到了下面的东西:
Foo* GetFoo*()
{
static Foo *fooobj = new Foo();
return fooobj;
}
但由于我不支持 C++11,静态本地初始化不是线程安全的。因此,这是行不通的。
另外如果barobj
是非静态的怎么办。那我就不用担心这场惨败了吧?对于依赖于不同翻译单元中的另一个非静态对象初始化的非静态对象初始化来说,这不是问题。对?