C++ 单例模式实现详解:保证唯一实例的最佳实践

这段代码展示了一个经典的 C++ 单例模式实现。单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来访问该实例。

#include <iostream>

using namespace std;

class Single {
public:
    static Single* getSingle() {
        static Single obj;
        return &obj;
    }
    void show() {
        cout << 'show' << endl;
    }
private:
    Single() {
        cout << 'Single' << endl;
    }
};

int main() {
    // Single wc;
    // Single ah;
    Single* ptr1 = Single::getSingle();
    ptr1->show();
    Single* ptr2 = Single::getSingle();
    return 0;
}

核心思想:

  • 私有构造函数: Single() 构造函数被声明为私有,阻止外部直接创建 Single 对象。
  • 静态成员函数: getSingle() 函数是静态的,可以通过类名直接调用,它返回一个指向 Single 对象的指针。
  • 静态局部变量: getSingle() 函数内部的 static Single obj 确保只创建一个 Single 对象,并在后续调用中返回同一对象指针。

工作流程:

  1. 第一次调用 Single::getSingle() 时,会创建一个 Single 对象,并返回该对象的指针。
  2. 由于 obj 是静态局部变量,它会在程序运行期间一直存在。
  3. 在后续调用 Single::getSingle() 时,会直接返回之前创建的对象指针,确保只有一个 Single 实例。

优点:

  • 保证了类只有一个实例。
  • 提供了全局访问点,方便其他模块访问该实例。

输出结果:

Single
show

总结:

C++ 单例模式通过私有构造函数、静态成员函数和静态局部变量的组合,实现了只有一个实例的类,并提供全局访问点。这种模式在需要控制实例数量,并提供统一管理的场景中非常有用。

C++ 单例模式实现详解:保证唯一实例的最佳实践

原文地址: https://www.cveoy.top/t/topic/qxSw 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录