对于简单的、不需要反复释放重建的单例,C++11之后正确方式如 @Alives 高赞答案。我来解释一下另一个常用方法有什么问题:
// header file class MyClass { public: static MyClass instance; } // impl file MyClass MyClass::instance;
最大的问题是:函数内static变量的构造顺序可预测,第一次访问时创建,程序退出(或DLL卸载时)以创建的反顺序销毁。而如果写成全局变量(或类内static成员),其构造顺序不定,只能保证以“某种顺序”在main函数之前完成构造,以反顺序销毁。这样一来,如果存在复杂的交互,可能会访问到未被构造的空对象。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有