Item 4: Make sure that objects are initialized before they're used
1. C++数组不对对象进行初始化,是因为这是C++的C部分,要考虑性能。Inside The C++ Oject Model也说明这这一规则,但是没有理由。
2. 要使用初始化列表,而不是赋值操作。
3. 要注意非本地静态对象,它们的初始化顺序是不确定的
4. 替代方案是用单体,但这里面的单体是单线程适用的,多线程情况下,下面的代码都回出问题。
void func()
{
const static string x = "Hello world!";
cout << x << endl;
}
除非确保该函数在单线程时调用。真是太危险了。
本文探讨了C++中对象初始化的重要性,包括数组不初始化的原因、初始化列表与赋值操作的区别,以及非本地静态对象初始化顺序的不确定性。同时,提出了单体模式作为替代方案及其在多线程环境下的局限性。
3432

被折叠的 条评论
为什么被折叠?



