单例模式,故名思意是只有单个实例对象的类。所以要控制构造函数,赋值函数的使用。
注意对类静态对象赋予初值的方法。
#include<iostream> using namespace std; class CSingleton { //其他成员 public: static CSingleton* GetInstance() { if ( m_pInstance == NULL ) //判断是否第一次调用 m_pInstance = new CSingleton(); return m_pInstance; } ~CSingleton(){ printf("use delete!"); }; private: CSingleton(){}; CSingleton &operator = (CSingleton ){};static CSingleton * m_pInstance; }; CSingleton * CSingleton::m_pInstance = NULL; //类静态成员的初始化要放在全局,并且要用定义的形式 int main(){ CSingleton* p1 = CSingleton :: GetInstance(); CSingleton* p2 = CSingleton :: GetInstance();//对象地址一样的 delete CSingleton :: GetInstance(); // 必须显示的删除 getchar(); }