温馨提示×

C++单例类怎样实现懒加载

c++
小樊
85
2024-07-25 17:18:14
栏目: 编程语言

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

0