Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1420675
  • 博文数量: 842
  • 博客积分: 12411
  • 博客等级: 上将
  • 技术积分: 5772
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-14 14:43
文章分类

全部博文(842)

文章存档

2013年(157)

2012年(685)

分类: C/C++

2012-05-31 15:45:18





点击(此处)折叠或打开

  1. Singleton.h
  2. --------------------------------------
  3. class CSingleton
  4. {
  5. private:
  6.     CSingleton() {}; //私有构造函数,实现单例模式
  7.     virtual ~CSingleton() {};//私有析构函数,对象只能new在堆上,而不能在栈上

  8. private:
  9.     static CSingleton* m_instance;

  10. public:
  11.     static CSingleton* instance()
  12.     {
  13.         if (NULL == m_instance)
  14.         {
  15.             m_instance = new CSingleton();
  16.         }
  17.         return m_instance;
  18.     }

  19.     /* 非自动调用析构函数 */
  20.     VOID Destroy(VOID)
  21.     {
  22.         if (NULL != m_instance)
  23.         {
  24.             delete m_instance;
  25.             m_instance = NULL;
  26.         }
  27.     }

  28.     /* 自动调用析构函数 */
  29. private:
  30.     class CGarbo
  31.     {
  32.     public:
  33.         ~CGarbo()
  34.         {
  35.             if (CSingleton::m_instance)
  36.             {
  37.                 delete CSingleton::m_instance;
  38.             }
  39.         }
  40.     private:
  41.         static CGarbo m_Garbo; //定义一个静态成员,在程序结束时,系统会调用它的析构函数
  42.     };
  43. };

点击(此处)折叠或打开

  1. Singleton.cpp
  2. ---------------------------------------
  3. CSingleton* CSingleton::m_instance = NULL; //MUST

点击(此处)折叠或打开

  1. 伪代码
  2. ---------------------------------------
  3. #include "Singleton.h"

  4. int main(void)
  5. {
  6.     CSingleton* pObj = CSingleton::instance();

  7.     /* 显式析构 */
  1.     pObj->Destroy(); //如果不进行显式析构的话, 类CGarbo会自动进行隐式析构
  1. }
阅读(1091) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~