#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;