C++ 单例模式实现详解:保证唯一实例的最佳实践
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对象,并在后续调用中返回同一对象指针。
工作流程:
- 第一次调用
Single::getSingle()时,会创建一个Single对象,并返回该对象的指针。 - 由于
obj是静态局部变量,它会在程序运行期间一直存在。 - 在后续调用
Single::getSingle()时,会直接返回之前创建的对象指针,确保只有一个Single实例。
优点:
- 保证了类只有一个实例。
- 提供了全局访问点,方便其他模块访问该实例。
输出结果:
Single
show
总结:
C++ 单例模式通过私有构造函数、静态成员函数和静态局部变量的组合,实现了只有一个实例的类,并提供全局访问点。这种模式在需要控制实例数量,并提供统一管理的场景中非常有用。
原文地址: https://www.cveoy.top/t/topic/qxSw 著作权归作者所有。请勿转载和采集!