c.hpp:
class C
{
private:
static SomeClass var;
public:
static void f()
{
// Uses var;
}
};
c.cpp:
SomeClass C::var;
调用C::f()
总是安全的吗?例如,来自在不同编译单元中定义的某个全局变量的构造函数?
最佳答案
没有。除了函数局部静态变量之外的所有初始化顺序都会以最糟糕的方式导致灾难。
技术术语是“静态初始化订单失败”。这是真实的,并且可以通过谷歌搜索。
诀窍是不要以任何形式使用全局变量。函数局部静态非常有用,如果您知道它们何时如此有用,则应在适当的时候使用它们。
关于c++ - 静态类变量是否在第一次调用静态成员函数之前初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24891283/