在C++中,可以通過以下兩種方式實現單例模式:
class Singleton {
private:
static Singleton* instance;
Singleton() {} // 將構造函數設為私有,禁止外部創建對象
public:
static Singleton* getInstance() {
if (instance == nullptr) {
instance = new Singleton();
}
return instance;
}
};
Singleton* Singleton::instance = nullptr;
使用時可以通過Singleton::getInstance()
獲取單例對象。
class Singleton {
private:
static Singleton* instance;
Singleton() {} // 將構造函數設為私有,禁止外部創建對象
public:
static Singleton* getInstance() {
if (instance == nullptr) {
instance = new Singleton();
}
return instance;
}
};
Singleton* Singleton::instance = nullptr;
使用時可以通過Singleton::getInstance()
獲取單例對象。
這兩種方式都將構造函數設為私有,禁止外部創建對象,通過靜態成員變量和靜態成員函數來實現單例對象的創建和獲取。在餓漢式中,單例對象在程序啟動時就會被創建出來,在懶漢式中,單例對象在第一次被使用時才會被創建出來。