假设写一个单例类,懒汉式,需要新建一个static的对象,而且需要使用结束后释放这个静态对象,则可以使用嵌套类,在嵌套类中重写嵌套类的析构函数来完成这个工作
class MySingleton {
public:
static MySingleton* getInstance()
{
//return mySingleton;
if (NULL == mySingleton)
{
mySingleton = new MySingleton();
//静态对象生命周期一直到程序退出,调用对象析构函数,delete mySingleton
static CGObj cg;
}
return mySingleton;
}
//类中套类,用来释放mySingleton对象
class CGObj {
public:
~CGObj()
{
if (NULL != MySingleton::mySingleton)
{
delete MySingleton::mySingleton;
MySingleton::mySingleton = NULL;
}
}
};
private:
static MySingleton* mySingleton;
MySingleton() {}
};
MySingleton* MySingleton::mySingleton = NULL;