在C++中實現單例模式可以使用模板和C++11的特性來達到目的。下面是一個簡單的示例代碼:
#include <iostream> template <typename T> class Singleton { public: static T& getInstance() { static T instance; return instance; } Singleton(const Singleton&) = delete; Singleton& operator=(const Singleton&) = delete; protected: Singleton() {} }; class MyClass : public Singleton<MyClass> { // 可以在這裏添加自定義代碼 public: void doSomething() { std::cout << "Doing something..." << std::endl; } }; int main() { MyClass& instance = MyClass::getInstance(); instance.doSomething(); return 0; }
以上代碼實現了一個模板類 Singleton
,其他類如果繼承了這個基類,就會成爲一個單例。在 main
函數中,通過 MyClass::getInstance()
獲取 MyClass
的唯一實例,並調用其中的方法。
在 Singleton
模板類中,通過靜態成員函數 getInstance()
返回類的唯一實例,利用了局部靜態變量的線程安全特性來實現單例。同時,禁用了複製構造函數和賦值操作符,確保單例對象不會被複制或賦值。
這樣設計的好處是,任何繼承自 Singleton
的類都可以方便地實現單例模式,而不需要重複編寫單例模式的邏輯。