设为首页 加入收藏

TOP

C++基础之单例模式(一)
2013-09-26 19:57:50 来源: 作者: 【 】 浏览:278
Tags:基础 单例 模式

  1.作用

  单例模式目的就是为了保证一个类只有一个实例。

  2.原理

  (1)私有静态指针变量实现:使用类的私有静态指针变量指向类的唯一实例,并用一个公有的静态方法获取该实例。

  (2)静态局部变量实现:在公有静方法中定义指向该类的一个静态局部变量,并返回该静态局部变量。

  3.实现

  3.1.私有静态指针变量实现

  3.1.1.特点

  A.它有唯一一个私有的、指向类的的静态成员指针m_pInstance.

  B.它有一个公有的暴露该单例的静态方法getInstance.

  C.构造函数是私有的,避免从其他地方创建该类实例。

  D.定义单例类中私有内嵌类CGarbo,在其析构函数中释放单例指针。

  E.定义CGarbo类的一个实例作为静态成员变量,利用程序结束系统会自动析构所有全局变量的特性来自动释放单例指针。

  3.1.2.示例

  [cpp]

  //Singleton1.h

  #pragma once

  class CSingleton1

  {

  public:

  static CSingleton1* getInstance()

  {

  if ( m_pInstance == NULL )

  m_pInstance = new CSingleton1();

  return m_pInstance;

  }

  private:

  CSingleton1();

  static CSingleton1* m_pInstance;

  class CGarbo//唯一的作用就是在析构时删除m_pInstance

  {

  public:

  ~CGarbo()

  {

  if (CSingleton1::m_pInstance!=NULL)

  {

  delete CSingleton1::m_pInstance;

  }

  }

  };

  static CGarbo m_garbo;//程序结束,系统会自动调用其析构函数

  };

  [cpp]

  //Singleton1.cpp

  #include "StdAfx.h"

  #include "Singleton1.h"

  CSingleton1* CSingleton1::m_pInstance=NULL;//静态成员变量的定义

  CSingleton1::CGarbo CSingleton1::m_garbo;//内嵌类静态成员变量的定义

  CSingleton1::CSingleton1()

  {

  }

   

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++代码的编译过程 下一篇冒泡排序、插入排序与选择排序

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: