class CSingleton {
public:
static CSingleton * GetInstance()
{
if (m_pInstance == NULL)
m_pInstance = new CSingleton();
return m_pInstance;
}
private:
CSingleton(){};
static CSingleton * m_pInstance;
class CGarbo //它的唯一工作就是在析构函数中删除CSingleton的实例
{
public:
~CGarbo()
{
if (CSingleton::m_pInstance)
delete CSingleton::m_pInstance;
}
};
static CGarbo Garbo; //定义一个静态成员,在程序结束时,系统会调用它的析构函数
};
//.cpp 中使用
CSingleton * CSingleton::m_pInstance = NULL;
CSingleton::CGarbo CSingleton::Garbo;