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; }