饿汉版 C++单例模式

来源:互联网 发布:java调用wsdl接口 cxf 编辑:程序博客网 时间:2024/06/08 08:38

#pragma once
///////
//饿汉版单例模式
class CSingInstance
{
public:
 ~CSingInstance(){};
//构造函数设为私有,防止多次实例化,保证单例模式只有一个实例
private:
 CSingInstance(){};
public:
 //保证结束程序,对象释放时释放内存。尽管程序结束系统会自动释放内存,但是谁创建谁释放,是C++攻城狮应有的基本素养。
 class DeleteObj
 {
 public:
  DeleteObj(){};
  ~DeleteObj(){
   if (m_pSinginstance)
   {
    delete m_pSinginstance;
    m_pSinginstance = NULL;
   }
  };

 };
public:
 DeleteObj obj;
 static CSingInstance *m_pSinginstance;
 static CSingInstance *GetSingInstance()
 {
  return m_pSinginstance;
 }
};
/*创建实例,静态对象可以调用私有构造函数,因为静态对象保存在静态存储区,
静态成员变量他并不是对象的一个属性而是类的一个属性,你可以把他想成是一种全局的变量,
即使你建n个对象,对这些变量内的成员做处理,静态成员变量也不会因为其中任何一个对象的改变而变,
也不会因为任何一个对象的释放而销毁,静态数据成员的初始化必须在类外,然后初始化是程序一开始就进行的。
*/
CSingInstance *CSingInstance::m_pSinginstance=new CSingInstance;

0 0
原创粉丝点击