21xrx.com
2024-12-22 22:18:03 Sunday
登录
文章检索 我的文章 写文章
C++单例模式
2023-07-04 18:09:33 深夜i     --     --
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++单例模式能够很好地保证类只有一个实例对象,并且能够全局访问和控制。在日常编码中,可以灵活使用该模式,提高代码设计的可读性和可扩展性。

  
  

评论区

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