21xrx.com
2024-12-22 23:11:48 Sunday
登录
文章检索 我的文章 写文章
C++单例模式代码实现
2023-06-27 20:17:13 深夜i     --     --
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++单例模式的实现方式多种多样,重点是要保证类只有一个实例,并提供了一个全局访问点。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复