只能实例化一次的类 (Singleton)
发布日期:2021-11-04 22:04:32
浏览次数:9
分类:技术文章
本文共 869 字,大约阅读时间需要 2 分钟。
01.class CSingleton 02.{ 03. public: 04. static CSingleton * GetInstance() 05. { 06. if(NULL == m_pInstance) 07. m_pInstance = new CSingleton(); 08. return m_pInstance; 09. } 10. static void Release() //必须,否则会导致内存泄露 11. { 12. if(NULL != m_pInstance) 13. { 14. delete m_pInstance; 15. m_pInstance = NULL; 16. } 17. } 18. 19. protected: 20. CSingleton() 21. { 22. cout<<"CSingleton"<
为了防止从类的外部调用构造函数,产生类的新的实例,我们应该把该类的构造函数声明成protected或者private。 由于只能生成一个类的实例,我们可以考虑用静态成员函数来记录,到底之前有没有构造过类的实例。 如果没有构造过,那么就构造一个新的实例。 如果构造过,那么就把之前构造的那个实例返回。 为了保证之前构造的实例,在程序运行期间一直存在,不被析构,我们只能把指向这个实例的指针声明成静态变量,存放在静态存储区,把这个类的实例用new来构造,并放在堆里。
另外,在wiki百科中,有一个关于 的词条,在实现Lazy Initialization的时候,其实也用到了Singleton的设计模式。
转载地址:https://blog.csdn.net/xiaochen87654321/article/details/72862222 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年04月18日 17时21分27秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Java多线程的11种创建方式以及纠正网上流传很久的一个谬误
2019-04-27
JDK源码研究Jstack,JMap,threaddump,dumpheap的原理
2019-04-27
Java使用字节码和汇编语言同步分析volatile,synchronized的底层实现
2019-04-27
javac编译原理和javac命令行的使用
2019-04-27
Unity使用UnityWebRequest实现本地日志上传到web服务器
2019-04-27
Unity使用RenderTexture实现裁切3D模型
2019-04-27
美术和程序吵架,原来是资源序列化格式设置不统一
2019-04-27
Unity iOS接SDK,定制UnityAppController
2019-04-27
Unity iOS接SDK前先要了解的知识(Objective-C)
2019-04-27
记一次iOS闪退问题的定位:NSLog闪退
2019-04-27
Unity打开照相机与打开本地相册然后在Unity中显示照片(Android与iOS)
2021-06-30
无需接入SDK即可在Unity中获取经纬度(Android/iOS),告诉我你的坐标
2021-06-30
Unity获取系统信息SystemInfo(CPU、显卡、操作系统等信息)
2021-06-30
Unity中获取物体的尺寸(size)的三种方法
2021-06-30
Unity中的关节组件和绳子效果的实现
2021-06-30
Unity可视化编程插件: Bolt,可以像UE4的蓝图那样啦
2021-06-30
Android的.dex、.odex与.oat文件扫盲
2021-06-30
Unity移动应用如何在Bugly上查看崩溃堆栈
2021-06-30