C++ 单例模式实现
1 #include <iostream> 2 #include <mutex> 3 4 std::mutex mtx; 5 class Singleton { 6 private: 7 Singleton() {} 8 Singleton(const Singleton& a); 9 Singleton& operator=(const Singleton&); 10 static Singleton * instance; 11 public: 12 static Singleton* getInstance() { 13 if (instance == nullptr) { 14 mtx.lock(); 15 if((instance == nullptr)){ 16 instance = new Singleton(); 17 } 18 mtx.unlock(); 19 } 20 return instance; 21 } 22 }; 23 Singleton* Singleton::instance = nullptr; 24 25 int main(){ 26 Singleton* instance1 = Singleton::getInstance(); 27 Singleton* instance2 = Singleton::getInstance(); 28 if(instance1 == instance2){ 29 std::cout << "singleton" << std::endl; 30 } 31 return 0; 32 }