设计模式 之 单例模式
#include<>
#include<mutex>
using namespace std;
mutex m;
class Singleton
{
private :
Singleton() {};
Singleton(const Singleton&) {};
static Singleton* m_instance;
class Recover
{
public:
~Recover()
{
if (Singleton::m_instance != nullptr)
{
delete Singleton::m_instance;
Singleton::m_instance = nullptr;
}
}
};
public:
static Singleton& GetInstance()
{
if (Singleton::m_instance == nullptr)
{
lock_guard<mutex>m_guard(m);
if (Singleton::m_instance == nullptr)
{
Singleton::m_instance = new Singleton;
static Recover recover;
}
return *Singleton::m_instance;
}
return *Singleton::m_instance;
}
};
Singleton* Singleton::m_instance = nullptr;
int main()
{
Singleton::GetInstance();
}