单例模式的自动析构
来源:互联网 发布:招聘新媒体美工的要求 编辑:程序博客网 时间:2024/06/05 08:53
总所周知,单例模式如果不主动调用,在进程结束时是不会析构的,而是仅仅把内存释放掉而已
所以,如果希望在析构时进行某些操作,在进程结束前,可以主动调用析构函数,如下面类中的delMe函数(xSingleton::getMe().delMe();)
可是,如果每定义这样一个类,都需要手动析构,实在是个麻烦的事,还常常会忘记。嘿嘿,于是利用构造函数和析构函数总是成对出现的原理,定义一个静态对象,程序结束时,静态对象必然被析构,于是在静态对象的析构函数里将单例模式的类也析构了,哈哈,这样就不用每次手动析构了
class xSingleton
{
private:
xSingleton(const xSingleton &);
const xSingleton &operator=(const xSingleton &);
public:
class CGarbo
{
public:
~CGarbo()
{
if(_instance)
delete(_instance);
printf("CGarbo:delete\n");
}
CGarbo()
{
printf("CGarbo::add\n");
}
};
//static CGarbo garbo; -------------------------(1)
所以,如果希望在析构时进行某些操作,在进程结束前,可以主动调用析构函数,如下面类中的delMe函数(xSingleton::getMe().delMe();)
可是,如果每定义这样一个类,都需要手动析构,实在是个麻烦的事,还常常会忘记。嘿嘿,于是利用构造函数和析构函数总是成对出现的原理,定义一个静态对象,程序结束时,静态对象必然被析构,于是在静态对象的析构函数里将单例模式的类也析构了,哈哈,这样就不用每次手动析构了
class xSingleton
{
private:
xSingleton(const xSingleton &);
const xSingleton &operator=(const xSingleton &);
public:
class CGarbo
{
public:
~CGarbo()
{
if(_instance)
delete(_instance);
printf("CGarbo:delete\n");
}
CGarbo()
{
printf("CGarbo::add\n");
}
};
//static CGarbo garbo; -------------------------(1)
protected:
static xSingleton *_instance;
xSingleton()
{
printf("xSingleton::add\n");
static CGarbo garbo; -------------------------(2)
}
virtual ~xSingleton(){
printf("xSingleton::delete\n");
}
static xSingleton *_instance;
xSingleton()
{
printf("xSingleton::add\n");
static CGarbo garbo; -------------------------(2)
}
virtual ~xSingleton(){
printf("xSingleton::delete\n");
}
public:
/* static void delMe()
{
if(_instance)
delete(_instance);
}
*/
static xSingleton& getMe()
{
if (!_instance)
_instance = new xSingleton;
return *_instance;
}
};
/* static void delMe()
{
if(_instance)
delete(_instance);
}
*/
static xSingleton& getMe()
{
if (!_instance)
_instance = new xSingleton;
return *_instance;
}
};
- 单例模式的自动析构
- 自动回收资源的单例模式
- c++ 单例模式下的实例自动销毁(单例自动回收器)
- c++ 单例模式下的实例自动销毁(单例自动回收器)
- c++设计模式之单例模式下的实例自动销毁(垃圾自动回收器)
- c++设计模式之单例模式下的实例自动销毁(垃圾自动回收器)
- java单例模式自动生成编号
- C++单例模式(自动释放实例)
- C++ 单例模式析构函数的运用
- 单例模式的构造和析构问题
- [转]C++ 单例模式析构函数的运用
- C++ 单例模式析构函数的运用
- 单例模式-析构函数的深入理解
- c++单例模式析构函数的调用
- c++单例模式为什么不在析构函数中释放静态的单例对象
- 设计模式 单例模式 优雅的单例模式
- 单例模式的设计分析(自动释放实例内存)
- [转]单例模式——C++实现自动释放单例类的实例
- 使用autotools建立Makefile简单实例解析
- R语言,一些数据操作
- 创建命名管道示例
- 给你一个详细的VLAN文档
- 简单使用ssh密钥认证
- 单例模式的自动析构
- ARM 编译连接原理入门
- HttpWebRequest The remote server returned an error: (407) Proxy Authentication
- 数据库中插入字符串
- mfc添加非通用控件
- java读取excel文件(使用jxl)
- 移动BOSS:从小米加步枪到航空母舰
- vim使用收藏
- 在小米手机上试用口信(多图)