最推荐静态局部变量实现单例:C++11保证线程安全、懒加载、自动析构;禁用拷贝赋值;模板基类可复用但需注意友元与虚析构;避免错误的双重检查锁定。

单例模式确保一个类只有一个实例,并提供全局访问点。C++中实现需兼顾线程安全、懒加载、防止拷贝和多态兼容性,推荐使用 C++11 及以后的 静态局部变量方式,简洁且天然线程安全。
最推荐:静态局部变量(C++11 线程安全)
利用 C++11 标准规定:函数内静态局部变量的初始化是线程安全的,且仅执行一次。
class Singleton {
private:
Singleton() = default; // 私有构造
Singleton(const Singleton&) = delete; // 禁用拷贝
Singleton& operator=(const Singleton&) = delete; // 禁用赋值
<p>public:
static Singleton& getInstance() {
static Singleton instance; // 延迟初始化,线程安全
return instance;
}</p><pre class='brush:php;toolbar:false;'>void doSomething() { /* ... */ }登录后复制
};
- 无需手动管理内存,自动析构(程序结束时调用析构函数)
- 首次调用
getInstance()时才构造,支持懒加载 - 编译器保证初始化过程原子性,无锁、高效、可移植
支持继承的单例基类(模板方式)
若需多个类共用单例逻辑,可封装为模板基类,但要注意虚析构和派生类构造控制:
立即学习“C++免费学习笔记(深入)”;
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~