c++单例模式怎么写

   2025-02-04 9910
核心提示:在C++中实现单例模式可以通过以下方式来实现:class Singleton {private:// 私有构造函数,防止外部创建对象Singleton() {}// 静

在C++中实现单例模式可以通过以下方式来实现:

class Singleton {private:    // 私有构造函数,防止外部创建对象    Singleton() {}    // 静态私有成员变量,用于保存单例对象    static Singleton* instance;public:    // 静态公有成员函数,用于获取单例对象    static Singleton* getInstance() {        if (instance == nullptr) {            instance = new Singleton();        }        return instance;    }};// 初始化静态成员变量Singleton* Singleton::instance = nullptr;

在这个实现中,通过将构造函数设置为私有,可以防止外部直接创建对象。通过静态成员变量和静态成员函数,可以实现全局唯一的单例对象,并通过getInstance函数来获取该对象。

需要注意的是,这个实现是简单的懒汉式单例模式,只有在第一次调用getInstance函数时才会创建对象。如果需要线程安全,可以使用锁来保证只有一个线程可以创建对象。

class Singleton {private:    // 私有构造函数,防止外部创建对象    Singleton() {}    // 静态私有成员变量,用于保存单例对象    static Singleton* instance;        // 静态私有成员变量,用于加锁    static std::mutex mtx;public:    // 静态公有成员函数,用于获取单例对象    static Singleton* getInstance() {        if (instance == nullptr) {            std::lock_guard<std::mutex> lock(mtx);            if (instance == nullptr) {                instance = new Singleton();            }        }        return instance;    }};// 初始化静态成员变量Singleton* Singleton::instance = nullptr;std::mutex Singleton::mtx;

在这个实现中,使用了std::mutex来实现线程安全。在第一次调用getInstance时,使用std::lock_guardmtx加锁,保证只有一个线程可以创建对象。

 
 
更多>同类维修知识
推荐图文
推荐维修知识
点击排行
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  网站留言