单例模式

本文深入解析单例模式的实现原理,包括私有化构造函数、静态成员变量和成员函数的应用。探讨了饿汉式和懒汉式的创建方式,并介绍了如何通过互斥锁、双重if判断及volatile关键字来保证线程安全性和代码效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单例模式:

  1. 一个类只允许创建唯一的对象
  2. 禁止在类的外部创建对象:私有化构造函数:private或protected
  3. 类的内部维护唯一对象:静态成员变量
  4. 提供访问单例对象的方法:静态成员函数,返回在类内部唯一构造的实例

创建方式

  1. 饿汉式:单例对象无论用或不用,程序启动即创建。
  2. 懒汉式:单例对象在用的时候再创建,不用即销毁。
class singleton   //实现单例模式的类  
  {  
  private:  
      singleton(){}  //私有的构造函数  
      static singleton* Instance;  
  public:  
      static singleton* GetInstance()  
      {  
          if (Instance == NULL) //判断是否第一调用  
              Instance = new singleton();  
          return Instance;  
      }  
  }; 


  
  class singleton   //实现单例模式的类  
  {  
  private:  
      singleton(){}  //私有的构造函数  
      volatile static singleton* Instance;  
        
  public:  
      static singleton* GetInstance()  
      {  
          if (Instance == NULL) //判断是否第一调用  
          {   
              Lock(); //表示上锁的函数  
              if (Instance == NULL)  
              {  
                  Instance = new singleton();  
              }  
              UnLock() //解锁函数  
          }             
          return Instance;  
      }  
  };  
  
  class singleton   //实现单例模式的类  
  {  
  private:  
      singleton() {}  //私有的构造函数  
        
  public:  
      static singleton* GetInstance()  
      {  
          static singleton Instance;  
          return &Instance;  
      }  
  }; 

1.互斥锁保证安全

2.双重if判断提高代码效率

3.volatile关键字防止编译器过度优化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值