在C++中實現懶加載的單例類可以使用靜態成員變量和靜態成員函數來實現。以下是一個示例代碼:
class Singleton {
private:
static Singleton* instance; // 靜態成員變量
Singleton() { } // 防止外部實例化
public:
static Singleton* getInstance() { // 靜態成員函數返回單例實例
if (instance == nullptr) {
instance = new Singleton();
}
return instance;
}
};
Singleton* Singleton::instance = nullptr; // 初始化靜態成員變量
int main() {
Singleton* singleton1 = Singleton::getInstance();
Singleton* singleton2 = Singleton::getInstance();
if (singleton1 == singleton2) {
std::cout << "singleton1 and singleton2 are the same instance" << std::endl;
} else {
std::cout << "singleton1 and singleton2 are different instances" << std::endl;
}
return 0;
}
在上面的示例中,Singleton
類有一個私有的靜態成員變量instance
用來存儲單例實例。靜態成員函數getInstance
用來返回單例實例,當實例為nullptr
時進行懶加載,即在第一次調用getInstance
時創建實例。在main
函數中,我們通過調用getInstance
函數獲取單例實例,并驗證兩個實例是否相同。
這樣就實現了在C++中使用懶加載方式創建單例類的方法。