C++ 在初始化静态成员变量时

C++ 在初始化静态成员变量时,c++,C++,我有密码 // CFoo.h class CFoo { public: CFoo(); ~CFoo(); static const std::string mStr; }; // CFoo.cpp const std::string mStr = "MyFoo"; CFoo::CFoo() { } CFoo::~CFoo() { } 何时初始化静态mStr?我的应用程序何时执行?或者在创建CFoo实例时 谢谢 它是实现定义的 唯一可以保证的是,它将在应用程序首次进入定义

我有密码

// CFoo.h
class CFoo
{
public:
   CFoo();
   ~CFoo();
   static const std::string mStr;
};

// CFoo.cpp
const std::string mStr = "MyFoo";

CFoo::CFoo()
{
}

CFoo::~CFoo()
{
}
何时初始化静态mStr?我的应用程序何时执行?或者在创建CFoo实例时


谢谢

它是实现定义的


唯一可以保证的是,它将在应用程序首次进入定义它的转换单元时初始化。

在调用
main()
之前的某个时间。此外,如果您搜索,这个主题还有很多内容。另外,对于在同一TU中定义的对象,保证初始化的顺序是其定义的顺序。