C++中的单例模式

来源:互联网 发布:手机游戏网络加速器 编辑:程序博客网 时间:2024/06/05 14:06
  1. class CSingleton  
  2. {  
  3. private:  
  4.     CSingleton()  
  5.     {  
  6.     }  
  7.     static CSingleton *m_pInstance;  
  8.     class CGarbo   //它的唯一工作就是在析构函数中删除CSingleton的实例  
  9.     {  
  10.     public:  
  11.         ~CGarbo()  
  12.         {  
  13.             if(CSingleton::m_pInstance)  
  14.                 delete CSingleton::m_pInstance;  
  15.         }  
  16.     };  
  17.     static CGarbo Garbo;  //定义一个静态成员变量,程序结束时,系统会自动调用它的析构函数  
  18. public:  
  19.     static CSingleton * GetInstance()  
  20.     {  
  21.         if(m_pInstance == NULL)  //判断是否第一次调用  
  22.             m_pInstance = new CSingleton();  
  23.         return m_pInstance;  
  24.     }  
  25. };

类CGarbo被定义为CSingleton的私有内嵌类,以防该类被在其他地方滥用。
程序运行结束时,系统会调用CSingleton的静态成员Garbo的析构函数,该析构函数会删除单例的唯一实例。
使用这种方法释放单例对象有以下特征:
在单例类内部定义专有的嵌套类;
在单例类内定义私有的专门用于释放的静态成员;
利用程序在结束时析构全局变量的特性,选择最终的释放时机;
使用单例的代码不需要任何操作,不必关心对象的释放。


0 0
原创粉丝点击