我遇到了我不了解的行为。
这是常见的单例实现的test code
链接中的代码:
#include <iostream>
using namespace std;
class CFoo
{
public:
static CFoo & instance ()
{
static CFoo instance;
return instance;
}
private:
CFoo ()
{
cout << "CFoo();" << endl;
}
};
int
main ()
{
cout << "main() enter" << endl;
CFoo & foo1 = CFoo::instance ();
cout << "got foo1 @ " << &foo1 << endl;
CFoo & foo2 = CFoo::instance ();
cout << "got foo2 @ " << &foo2 << endl;
cout << "main() leave" << endl;
return 0;
}
请注意,函数(CFoo
)中的静态(instance()
)仅在首次调用函数时(Main() enter
之后)才初始化。
这种行为使我感到困惑,因为我认为静电会在启动(主电源前)阶段启动。 另外,对于c ++来说这似乎是非常规的,因为我唯一想到的是通过添加“隐藏”条件来检查“首次进入”。
我有两个问题: