C++版单例模式-现代化简洁写法 - 指南

回顾一下单例模式,下面是现代最简洁的写法,且都保证了线程安全

饿汉式(线程安全)

程序启动时,实例就开始创建了,因此是线程安全的。

class Singleton{
private:
    Singleton(){}
    Singleton(const Singleton&) = delete;
    Singleton& operator=(const Singleton&) = delete;
    static Singleton instance;//类内声明
public:
    static Singleton& getInstance(){
      return instance;
    }
}
Singleton Singleton::instance;

懒汉式(线程安全)

第一次调用instance函数时,实例才被创建出来,全局访问节点使用静态局部变量,保证了实例初始化一次且C++11规定静态局部变量是天然线程安全的

class Singleton{
private:
  Singleton(){}
  Singleton(const Singleton&) = delete;
  Singleton& operator=(const Singleton&) = delete;
public:
  Singleton& getInstance(){
      static Singleton instance;
      return instance;
  }
}
posted @ 2025-09-13 16:25  wzzkaifa  阅读(7)  评论(0)    收藏  举报