C++单例模式

所谓单例模式,就是只允许全局有一个此类生成的对象。在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);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容