Singletons are basically complicated global objects in disguise. DO NOT USE IT! class Singleton { private: static Singleton* instance; // Private constructor to prevent instantiation Singleton() {} public: // Delete copy constructor and assignment operator Singleton(const Singleton&) = delete; Singleton& operator=(const Singleton&) = delete; // Public method to get the instance static Singleton* getInstance() { if (instance == nullptr) { instance = new Singleton(); } return instance; } // Example method void someMethod() { // Implementation here } }; // Initialize the static member Singleton* Singleton::instance = nullptr; Thread-safe Singleton X& myX() { static X my_x {3}; return my_x; } 因為 thread 有自己的 stack,因此上面的 function 的 static variable 是 thread-safe。 Reference Singleton Pattern – Design Patterns (ep 6)