C++ 单例模式

C++ 单例模式有两种写法:

  饿汉模式  和  懒汉模式

饿汉模式:
    优点:对象提前创建好,使用的时候无需等待,效率高
    缺点:对象提前创建,所以占用内存高
    以空间占时间
    
懒汉模式:
    优点:使用对象时,对象才创建,不会提前占用内存
    缺点:首次使用对象时,需要等待对象的创建,效率低
    以时间换空间

 

 

饿汉模式:

#include <iostream>
using namespace std;


class MyCAS
{
private:
    MyCAS() {}                   // 私有化构造函数
    static MyCAS *m_instance;    // 静态成员变量

public:
    static MyCAS* GetInstance()
    {
        return m_instance;
    }

    void func() { cout << "test 123" << endl; }
};


// 类静态变量初始化
MyCAS* MyCAS::m_instance = new MyCAS();

int main()
{
    // 创建对象,返回对象指针
    MyCAS* p = MyCAS::GetInstance();

    return 0;
}

 

 

 

懒汉模式:

#include <iostream>
using namespace std;


class MyCAS
{
private:
    MyCAS() {}                   // 私有化构造函数
    static MyCAS* m_instance;    // 静态成员变量

public:
    static MyCAS* GetInstance()
    {
        if (m_instance == NULL)
        {
            m_instance = new MyCAS();
            static CGarhuishou ci;
        }
        return m_instance;
    }

    // 类中封装一个类,用来析构单例类
    class CGarhuishou
    {
    public:
        ~CGarhuishou()
        {
            if (MyCAS::m_instance)
            {
                delete MyCAS::m_instance;
                MyCAS::m_instance = NULL;
            }
        }
    };

    void func() { cout << "test 123" << endl; }
};


// 类静态变量初始化
MyCAS* MyCAS::m_instance = NULL;

int main()
{
    // 创建对象,返回对象指针
    MyCAS* p = MyCAS::GetInstance();

    return 0;
}

 

posted @ 2023-06-18 23:57  十一的杂文录  阅读(10)  评论(0编辑  收藏  举报