美文网首页
C++单例模式

C++单例模式

作者: 天官大冢宰 | 来源:发表于2017-09-07 23:48 被阅读0次

    所谓单例模式,就是只允许全局有一个此类生成的对象。在C++中有几种实现,下面一一列举。

    1. 最初模式

    class Singleton {
    public:
        static Singleton * GetInstance() {
            if(m_pInstance==NULL) 
                m_pInstance=new Singleton();
            return m_pInstance;
        }
    private:
        static Singleton *m_pInstance;
        Singleton();
        Singleton & operator=(Singleton& s);
        Singleton(Singleton& s);
    }
    

    需要解释的几点:

    • 必须把构造函数、赋值运算、拷贝构造函数设为私有,这是防止单例在外部被复制;
    • 使用static成员,保证全局只有一份。

    有些朋友说这里单例需要被释放的问题。其实这是个伪问题,不存在,单例一旦被创建就会活到整个程序结束。当程序结束时,程序占用的堆(单例被new的地方)也会应被操作系统自动释放,程序结束后,不会遗留任何问题,所以不必担心空间的释放问题。

    2. 局部静态变量实现

    可以使用局部的静态变量来实现,看代码干净整洁了许多。

    class Singleton {
    public:
        static Singleton & GetInstance() {
            static Singleton obj
            return obj;
        }
    private:
        Singleton();
        Singleton & operator=(Singleton& s);
        Singleton(const Singleton& s);
    }
    

    相关文章

      网友评论

          本文标题:C++单例模式

          本文链接:https://www.haomeiwen.com/subject/tvebjxtx.html