21xrx.com
2025-03-31 08:19:52 Monday
文章检索 我的文章 写文章
C++单例模式代码实现
2023-06-27 20:17:13 深夜i     11     0
C++ singleton pattern code implementation

单例模式是一种常用的设计模式,它保证一个类只有一个实例,并提供了一个全局访问点。在C++中,可以通过封装构造函数和析构函数、禁止复制构造函数和赋值运算符等手段来实现单例模式。

下面是一个简单的C++单例模式的代码实现:

class Singleton {
private:
  Singleton() {} // 构造函数私有化,禁止外部调用
  Singleton(const Singleton&); // 复制构造函数私有化,禁止外部调用
  Singleton& operator=(const Singleton&); // 赋值运算符私有化,禁止外部调用
  static Singleton* instance; // 声明静态成员变量,用于存储单例对象的指针
public:
  static Singleton* getInstance() {
    if (instance == NULL) {
      instance = new Singleton();
    }
    return instance;
  } // 全局访问点,用于获取单例对象的指针
  void doSomething()
    // 单例对象要执行的操作
  
};
Singleton* Singleton::instance = NULL; // 初始化静态成员变量
int main() {
  Singleton* obj1 = Singleton::getInstance();
  obj1->doSomething(); // 调用单例对象的方法
  Singleton* obj2 = Singleton::getInstance();
  if (obj1 == obj2)
    cout << "obj1和obj2是同一个对象" << endl; // 判断单例对象是否相同
  
  return 0;
}

在上面的代码中,使用私有化构造函数、禁止复制构造函数和赋值运算符等手段,确保了单例对象只能在类内部进行创建和复制。定义了一个静态成员变量instance,并通过getInstance()方法来获取单例对象的指针。在main函数中,调用单例对象的方法,并比较两个对象是否相同,验证了单例模式的实现。

总之,C++单例模式的实现方式多种多样,重点是要保证类只有一个实例,并提供了一个全局访问点。

  
  

评论区