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;
  }
}
相关推荐
Elias不吃糖2 小时前
epoll 事件全集、每个事件的含义、哪些事件在实际服务器中最常见、哪些会组合出现
linux·c++·event
AA陈超2 小时前
ASC学习笔记0017:返回此能力系统组件的所有属性列表
c++·笔记·学习·ue5·虚幻引擎
Unlyrical3 小时前
splice, io_uring_prep_splice 调用(无效参数)
linux·服务器·c++·unix
Lucis__4 小时前
STL设计模式探秘:容器适配器&仿函数
c++·容器·stl·仿函数
无敌最俊朗@4 小时前
C++ 对象布局之padding(填充字节)
开发语言·c++
小龙报4 小时前
《DevC++支持C++11等与其软件分辨率低的解决办法》
c语言·c++·windows·蓝桥杯·pat考试·学习方法·dvc++
大佬,救命!!!4 小时前
C++函数式策略模式中配置修改
c++·学习笔记·迭代加深·企业级·函数式策略模式·多文件编译环境·json环境配置修改
Chiang木5 小时前
C++进阶:coroutine 协程
开发语言·c++·协程
蕓晨5 小时前
数据结构 图 的邻接表建立
数据结构·c++
渡我白衣5 小时前
深入 Linux 内核启动:从按下电源到用户登录的全景解剖
java·linux·运维·服务器·开发语言·c++·人工智能