C++实现单例模式

#include<iostream>
#include<mutex>
using namespace std;

mutex mtx;

class CSingleton
{
private:
    CSingleton() //构造函数是私有的
    {
    }
    static CSingleton *Instance;
public:
    static CSingleton * GetInstance()
    {
        if(Instance == NULL){    
            mtx.lock();
            if(Instance == NULL)
                Instance = new CSingleton();
            cout<<"This is singleton"<<endl;
            mtx.unlock();
        }
        
        return Instance;
    }
    void print()
    {
        cout<<"aaa"<<endl;
    }
};
CSingleton* CSingleton::Instance = 0;//类静态变量需要在类外初始化

int main()
{
    CSingleton* a = CSingleton::GetInstance();
    a->print();
    return 0;
}

 

posted @ 2019-09-18 22:31  L·先生  阅读(500)  评论(0)    收藏  举报