c++单例模式怎么写

avatar
作者
猴君
阅读量:0

在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加锁,保证只有一个线程可以创建对象。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!