21xrx.com
2024-11-05 16:31:59 Tuesday
登录
文章检索 我的文章 写文章
C++饿汉式单例模式
2023-07-05 01:15:48 深夜i     --     --
C++ 饿汉式 单例模式

C++中的单例模式可以使用饿汉式来实现。饿汉式的单例模式是指在程序启动时就创建了一个类的唯一实例,之后每次获取实例时都返回同一个对象的引用或指针。

实现饿汉式单例模式的关键在于将构造函数和析构函数私有化,以此保证只能通过指定的静态方法获取单例实例。下面是一个例子:


class Singleton {

private:

  Singleton() {}

  ~Singleton() {}

  static Singleton * instance;

public:

  static Singleton* getInstance()

    return instance;

  

};

Singleton * Singleton::instance = new Singleton();

在这个例子中,构造函数和析构函数都被声明为私有的,这样就无法通过普通的方式创建对象。而静态的getInstance()方法则返回类的唯一实例,通过类的静态成员变量instance来实现。

值得注意的是,在静态成员变量instance声明时就已经使用了“饿汉式”的方式,即在程序启动时就创建了唯一实例。这样一来,getInstance()方法就可以直接返回这个单例实例的指针或引用。

上述代码中还有一个让人意想不到的细节——instance指针的类型是Singleton*而不是Singleton。这是为了解决C++程序在运行时静态变量的初始化顺序问题。如果instance的类型为Singleton,则在程序启动时可能会出现调用getInstance()方法,但是instance还没有被初始化的情况。而如果instance的类型为Singleton*,则只需要在类的静态成员变量的初始化时进行实例化即可。

总之,饿汉式单例模式是十分常见的一种设计模式,可以保证在程序启动时就唯一地创建一个实例,并且可以在后续的使用中方便地获取这个实例。在C++中,可以通过将构造函数和析构函数私有化以及静态成员变量的初始化来实现饿汉式单例模式。

  
  

评论区

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