21xrx.com
2024-11-05 18:41:13 Tuesday
登录
文章检索 我的文章 写文章
C++静态单例模式
2023-07-08 16:33:45 深夜i     --     --
C++ 静态 单例模式

C++静态单例模式是一种常用的设计模式,用于确保程序中只有一个实例对象存在。该模式通常被用于多线程中,因为在多线程环境下,多个线程同时访问同一个对象可能导致不可预料的结果。使用静态单例模式可以确保对象只被创建一次,并在整个程序中共享使用。

在C++中,实现静态单例模式的方法通常为在类中定义静态变量和静态成员函数。静态变量仅会被初始化一次,因此只会创建一个实例对象。静态成员函数则被用于获取该对象的引用或指针。

以下是一个简单的C++静态单例模式的示例代码:


class Singleton {

private:

  static Singleton* instance; // 静态变量,存储单例对象的指针

  Singleton() {} // 构造函数为私有,禁止外部创建新实例

public:

  static Singleton* getInstance() { // 静态成员函数,获取单例对象的指针

    if (instance == nullptr) {

      instance = new Singleton(); // 如果指针为空,则创建新对象

    }

    return instance; // 返回单例对象的指针

  }

  void doSomething() // 单例对象的成员函数

    // ...

  

};

Singleton* Singleton::instance = nullptr; // 初始化静态变量为nullptr

int main() {

  Singleton* singleton1 = Singleton::getInstance(); // 获取单例对象的指针

  Singleton* singleton2 = Singleton::getInstance();

  assert(singleton1 == singleton2); // 验证两次获取的指针是否相同

  singleton1->doSomething(); // 调用单例对象的成员函数

  singleton2->doSomething();

  return 0;

}

在上述示例代码中,使用了静态变量instance存储单例对象的指针。静态成员函数getInstance则负责获取该指针。在main函数中,验证两次获取的指针是否相同,并调用单例对象的成员函数doSomething。

总之,C++静态单例模式是一种常用的设计模式,用于确保程序中只有一个实例对象存在。通过定义静态变量和静态成员函数,可以仅创建一个实例对象,并在整个程序中共享使用。

  
  

评论区

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