c++如何实现单例模式 c++设计模式之单例【实例】

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

c++如何实现单例模式 c++设计模式之单例【实例】-第1张图片-佛山资讯网

单例模式确保一个类只有一个实例,并提供全局访问点。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++免费学习笔记(深入)”;

标签: 懒加载 ai c++ 无锁

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~