C++单例模式

2017-09-07  本文已影响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);
}

需要解释的几点:

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

2. 局部静态变量实现

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

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

猜你喜欢

热点阅读