单例模式(C++)
2016-03-28 18:39
267 查看
单例模式(Singleton),是保证一个类仅有一个实例,并提供一个访问它的全局访问点。
class Singleton{
private:
Singleton(){};
public:
static Singleton *instance;
static Singleton *GetInstance();
};
Singleton *Singleton::instance=NULL;
Singleton *Singleton::GetInstance(){
if(instance==NULL){
instance=new Singleton();
}
return instance;
}
有个问题就是,在C++里通过new动态分配的内存都需要手动释放,而上面代码却找不到合适的地方释放掉instance。看过一些资料,做法就是利用析构函数。我们知道static对象的析构函数是在程序结束后执行的,所以可以在Singleton里再加一个static成员变量,在这个变量的析构函数中释放掉instance。
class Singleton{
private:
Singleton(){};
public:
static Singleton *instance;
static Singleton *GetInstance();
};
Singleton *Singleton::instance=NULL;
Singleton *Singleton::GetInstance(){
if(instance==NULL){
instance=new Singleton();
}
return instance;
}
有个问题就是,在C++里通过new动态分配的内存都需要手动释放,而上面代码却找不到合适的地方释放掉instance。看过一些资料,做法就是利用析构函数。我们知道static对象的析构函数是在程序结束后执行的,所以可以在Singleton里再加一个static成员变量,在这个变量的析构函数中释放掉instance。
相关文章推荐
- leetcode笔记:Number of 1 Bits
- C语言学习笔记之字符串I/O(gets()函数和puts()函数)
- 双基回文数(C语言)
- C语言中的数据类型转换-横向箭头的真正意思
- C语言实现单链表的基本操作及其部分面试题
- C++笔试面试题
- C++ BSON 帮助函数
- C++ 初始化列表
- 2016-3-28 epoll压力测试 回射延时计算 毕设C++框架
- jasoncpp在visual studio下的编译和使用
- c#语法与c++ 及 java语法的对比分析
- 利用c实现简易的ping
- 面向对象设计的SOLID原则
- c/c++利用socket判断web服务器是否能访问
- 设计模式--观察者模式C++实现
- C++处理JSON数据和在face++ 调用中的使用
- INI配置文件解析——C++实现
- c语言:链栈的实现
- 分数拆分(C语言)
- 【C++】JSON数据解析——jsoncpp的使用