只能实例化一次的类 (Singleton)
来源:互联网 发布:skycopy是什么软件 编辑:程序博客网 时间:2024/05/18 03:10
class CSingleton { public: static CSingleton * GetInstance() { if(NULL == m_pInstance) m_pInstance = new CSingleton(); return m_pInstance; } static void Release() //必须,否则会导致内存泄露 { if(NULL != m_pInstance) { delete m_pInstance; m_pInstance = NULL; } } protected: CSingleton() { cout<<"CSingleton"<<endl; }; static CSingleton * m_pInstance; }; CSingleton* CSingleton::m_pInstance = NULL;
为了防止从类的外部调用构造函数,产生类的新的实例,我们应该把该类的构造函数声明成protected或者private。
由于只能生成一个类的实例,我们可以考虑用静态成员函数来记录,到底之前有没有构造过类的实例。
如果没有构造过,那么就构造一个新的实例。
如果构造过,那么就把之前构造的那个实例返回。
为了保证之前构造的实例,在程序运行期间一直存在,不被析构,我们只能把指向这个实例的指针声明成静态变量,存放在静态存储区,把这个类的实例用new来构造,并放在堆里。
由于只能生成一个类的实例,我们可以考虑用静态成员函数来记录,到底之前有没有构造过类的实例。
如果没有构造过,那么就构造一个新的实例。
如果构造过,那么就把之前构造的那个实例返回。
为了保证之前构造的实例,在程序运行期间一直存在,不被析构,我们只能把指向这个实例的指针声明成静态变量,存放在静态存储区,把这个类的实例用new来构造,并放在堆里。
另外,在wiki百科中,有一个关于Lazy Initialization的词条,在实现Lazy Initialization的时候,其实也用到了Singleton的设计模式。
- 只能实例化一次的类 (Singleton)
- 只能实例化一次的类 (Singleton)
- 只能实例化一次的类
- 只能被实例化一次的类
- 类只能实例化一次
- 实现一个类只能被实例化一次
- 构造函数定义为private,protected 与 一道面试题:只能实例化一次的类
- 单例类(Singleton)一个类始终只能创建一个实例
- java中如何让一个类只能实例一次
- 只能打开一次的进程
- 关于 创建 只能 实例化两个 对象的单体类
- Singleton 同一个程序同时只能启动一个实例
- #CserialPort类串口发送只能发送一次的问题
- SIngleton单实例类
- .NET限制程序一次只能运行一个实例
- 线程安全的singleton实例
- PB运行的程序只能运行一次
- 表单里只能点击一次的按钮
- C/C++变量存储区域
- 6_8_5在order结构体中添加一个函数.该结构体返回一个格式化的字符串,以合适的值替换用尖括号扩起来的条目
- 【CodeForce】Codeforces Round #142 (Div. 2) A B C
- size_t & size_type小总结
- 数组中出现次数超过一半的数字
- 只能实例化一次的类 (Singleton)
- 获取成员函数地址及获取函数地址
- initramfs文件系统的制作及yaffs2根文件系统制作(busybox-1.20.2)
- Ubuntu系统下安装中文输入法
- 装有ubuntu的笔记本关闭/开启触摸屏
- !!!Chapter 8 The IO Library
- 一个小圆沿着大圆圆周滚动,求小圆转动周数
- JavaScript类库/组件/框架封装的总体结构
- qsort 源代码