设计模式 之 单例模式

时间:2025-03-25 20:00:19
#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(); }