在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++中使用懒加载方式创建单例类的方法。