只能实例化一次的类 (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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:瑞利信道,莱斯信道和高斯信道模型
下一篇:B. UCloud 的安全秘钥(简单)

发表评论

最新留言

表示我来过!
[***.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
python遇到了‘module‘ object has no attribute ‘socket‘问题,大概率是这个原因 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使用adb logcat时日志中文乱码问题,使用chcp 65001设置编码即可 2021-06-30
Android的.dex、.odex与.oat文件扫盲 2021-06-30
Unity移动应用如何在Bugly上查看崩溃堆栈 2021-06-30