21xrx.com
2025-03-27 05:44:49 Thursday
文章检索 我的文章 写文章
C++单例模式
2023-07-04 18:09:33 深夜i     16     0
C++ 单例模式 对象 实例化

C++单例模式是一种常用的软件设计模式,它可以保证一个类只有一个实例对象,以便于对该对象的全局访问和控制。

单例模式通常将构造函数和析构函数均设置为私有,以防止外部通过创建新对象来实现多次实例化。另外,单例模式还需要提供一个静态的公有方法来获取该类的实例对象,并通过该方法来保证该类的唯一实例。一般情况下,单例模式的实例对象是在第一次调用静态获取方法时生成的。

在C++编程中,实现单例模式可以采用如下的代码框架:

class Singleton {
public:
  static Singleton* getInstance() {
    if (singleton == nullptr) {
      singleton = new Singleton();
    }
    return singleton;
  }
  void doSomething()
    // do something ...
  
private:
  Singleton() {}
  Singleton(const Singleton&) = delete;
  Singleton& operator=(const Singleton&) = delete;
  static Singleton* singleton;
};
Singleton* Singleton::singleton = nullptr;

在上述代码中,将构造函数设置为私有,以保证只能从内部进行实例化。而静态的公有方法`getInstance`则起到了外部获取单例的作用。在该方法中,如果当前类的实例对象为`nullptr`,则通过`new`创建一个新的实例对象。最后,该方法返回该单例对象的指针。

此外,为了避免外部对单例进行拷贝或赋值操作,还需要将拷贝构造函数和赋值运算符设置为私有,并且不进行实现(使用`= delete`)。

总之,C++单例模式能够很好地保证类只有一个实例对象,并且能够全局访问和控制。在日常编码中,可以灵活使用该模式,提高代码设计的可读性和可扩展性。

  
  

评论区