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;
  }
}
相关推荐
汉克老师14 分钟前
GESP6级C++考试语法知识(三十九、动态规划的启蒙(四、二维DP))
c++·动态规划·dp·gesp六级·二维dp
QiLinkOS15 分钟前
QiLink 技术委员会选举实施细则
c语言·数据结构·c++·单片机·嵌入式硬件·算法·开源
不会C语言的男孩18 分钟前
C++ Primer Plus 第13章:类继承
开发语言·c++
承渊政道19 分钟前
Linux系统学习【进程控制:进程创建、终止与等待、进程程序替换、自主shell命令行解释器详解】
linux·服务器·c++·学习·ubuntu·bash·远程工作
雪度娃娃22 分钟前
转向现代C++——优先选用删除函数而非private未定义函数
java·jvm·c++
QiLinkOS29 分钟前
发明人与专利价值共生逻辑
c语言·数据结构·c++·人工智能·单片机·嵌入式硬件·算法
王老师青少年编程32 分钟前
信奥赛C++提高组csp-s之平衡树(Treap)
c++·平衡树·treap·信奥赛·csp-s·提高组
磊 子41 分钟前
STL之set以及set和map区别
开发语言·c++·算法
Python+991 小时前
C++ 内存模型 & 底层原理
java·jvm·c++
zincsweet1 小时前
Linux 命名管道(FIFO)详解:原理分析、源码封装与通信流程图解
linux·服务器·c++·流程图