21xrx.com
2025-07-15 07:37:32 Tuesday
登录
文章检索 我的文章 写文章
C++如何实现单例模式
2023-07-07 12:50:01 深夜i     16     0
C++ 单例模式 实现

单例模式是一种常用的设计模式,它确保一个类只有一个实例,并提供一个唯一的全局访问点。在C++中,单例模式可以通过各种方式来实现,下面介绍其中两种方法。

第一种方法是使用静态成员变量。在类的定义中,定义一个静态成员变量instance,然后声明一个私有的构造函数和一个公共的静态函数GetInstance(),该函数返回该静态成员变量的指针。在GetInstance()函数中,如果instance为NULL,则创建一个新的类实例并将其赋值给instance。最后,返回instance。

具体代码如下:

class Singleton {
 private:
  static Singleton* instance;
  Singleton() {}
 public:
  static Singleton* GetInstance() {
    if (instance == NULL) {
      instance = new Singleton();
    }
    return instance;
  }
};
Singleton* Singleton::instance = NULL;

第二种方法是使用局部静态变量。在类的定义中,声明一个公共的静态函数GetInstance(),该函数定义一个局部静态变量,并返回该变量的地址。由于局部静态变量只会在函数第一次被调用时初始化,因此GetInstance()函数保证只会创建一个实例。

具体代码如下:

class Singleton {
 private:
  Singleton() {}
 public:
  static Singleton* GetInstance()
    static Singleton instance;
    return &instance;
  
};

无论使用哪种方式,都需要保证构造函数是私有的,这样才能防止外部类通过实例化类来创建多个实例。此外,单例模式的应用场景也非常广泛。例如,可以使用单例模式来管理日志、配置文件等全局资源,并确保系统中只有一个实例访问它们。

  
  

评论区