21xrx.com
2025-03-26 11:44:36 Wednesday
文章检索 我的文章 写文章
C++静态单例实现
2023-07-05 10:28:09 深夜i     10     0
C++ 静态 单例 实现 编程

在C++中,我们常常需要使用单例模式来实现某些特定的功能。而静态单例是一种比较常见的实现方法。它可以保证我们的单例对象只有一个实例,并且在整个程序中都可以进行访问。

静态单例实现的基本思路是将构造函数设为私有的,然后再定义一个静态的指针变量来存储我们的单例对象。在C++中,我们可以使用类的静态成员变量来实现这种静态指针。

具体实现如下:

class Singleton {
private:
  Singleton() {}; // 将构造函数设为私有的
  static Singleton* instance; // 静态指针变量
public:
  // 获取单例对象的方法
  static Singleton* getInstance() {
    if (!instance) { // 如果指针为空则创建单例对象
      instance = new Singleton();
    }
    return instance;
  }
};
Singleton* Singleton::instance = nullptr; // 静态指针变量初始化为空
int main() {
  // 获取单例对象
  Singleton* s1 = Singleton::getInstance();
  Singleton* s2 = Singleton::getInstance();
  // 判断两个对象是否相等
  if (s1 == s2)
    cout << "两个对象相等" << endl;
   else
    cout << "两个对象不相等" << endl;
  
  return 0;
}

在上面的代码中,我们将构造函数设为私有的,这意味着不能直接通过类名来调用构造函数来创建对象。而是通过定义一个静态的指针变量`instance`,并在`getInstance`方法中判断`instance`是否为空来创建单例对象。注意,我们需要将`instance`初始化为`nullptr`,否则在调用`getInstance`方法时会抛出异常。

通过上述实现,我们可以保证在整个程序中只有一个`Singleton`对象,可以在任何地方进行访问。这种实现方法非常简单,并且易于理解,适用于较小的项目。

  
  

评论区