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;

}

 

posted @ 2024-08-14 13:20  Q星星  阅读(2)  评论(0编辑  收藏  举报