C++第03课 特殊成员 (三)

1.单例模式(不考虑多线程)

 构造函数私有化。

提供静态公有接口访问对象。

  1.1懒汉式(在多线程下存在安全问题)

  1.2饿汉式

//懒汉式
namespace lanHan {
    class MM {
    public:
        static MM* getMM()
        {
            if (lpMM == nullptr) {
                lpMM = new MM;
            }
            //饿汉式不做判空处理,直接return
            return lpMM;
        }
    protected:
        string name;
        int age;
    private:
        MM() {}    //构造函数私有化后仍然可以创建指针
        MM(string name, int age) :name(name), age(age) { }
        static MM* lpMM;    //用来指向创建指针
    };
}
lanHan::MM* lanHan::MM::lpMM = nullptr;

int main()
{
    lanHan::MM* mm = lanHan::MM::getMM();
    lanHan::MM* mm1 = lanHan::MM::getMM();
    cout << mm <<"\t"<<mm1<< endl;

    return 0;
}

 

posted @ 2021-09-04 22:32  Creature_lurk  阅读(23)  评论(0编辑  收藏  举报