C++单例模式
当我们学习类的时候,有private、public、构造函数和析构函数等等,帮助我们应对不同的需求,以此来应对不同的设计问题。
那么会存在以下一种情况,我们模拟一个国家政体,一个国家只能有一个总统。我们目前能创建多个对象的方法有,1.通过复制对象,2.实例化时创建多个对象,对于第一种我们可以将默认构造函数、复制构造函数设为私有,确保对象不可以复制。对于第二种我们可以使用静态static关键字。
#include<iostream>
#include<string>
using namespace std;
class President{
private:
// 私有默认构造函数
President(){
// 初始化操作
};
// 私有复制构造函数
President(const President &);
// 赋值运算符
// 赋值操作符被删除,进一步防止对象被复制或赋值。
const President &operator = (const President&);
string name;
public:
// 单例模式的核心在此处
// 提供一个静态公有方法来获取实例
// 内部声明了一个静态局部变量onlyInstance,这个变量的生命周期贯穿整个程序
// 确保了President类只有一个实例
static President & GetInstance(){
static President onlyInstance;
return onlyInstance;
}
string GetName(){
return name;
};
void SetName(string InputName){
name=InputName;
}
};
int main(){
President &onlyPresident = President::GetInstance();
onlyPresident.SetName("Lincoln");
cout << President::GetInstance().GetName() << endl;
return 0;
}
浙公网安备 33010602011771号