阅读背景:

剑指offer笔记面试题2----实现Singleton模式

来源:互联网 

题目:设计一个类,我们只能生成该类的一个实例。

解法一:单线程解法

    //缺点:多线程情况下,每个线程可能创建出不同的的Singleton实例
    #include <iostream>
    using namespace std;
    
    class Singleton
    {
    public:
        static Singleton* getInstance()
        {
            if(m_pInstance == nullptr)
            {
                m_pInstance = new Singleton();
            }
            return m_pInstance;
        }
    
        static void destroyInstance()
        {
            if(m_pInstance != nullptr)
            {
                delete m_pInstance;
                m_pInstance = nullptr;
            }    
        }
    private:
        Singleton(){}
        static Singleton* m_pInstance;
    };
    
    Singleton* Singleton::m_pInstance = nullptr;
    
    // 单线程获取多次实例
    void Test1(){
        // 预期结果:两个实例指针指向的地址相同
        Singleton* singletonObj = Singleton::getInstance();
        cout << singletonObj << endl;
        Singleton* singletonObj2 = Singleton::getInstance();
        cout << singletonObj2 << endl;
        Singleton::destroyInstance();
    }
    
    int main(){
        Test1();
        return 0;
    }    //缺点:多



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: