单例模式CPP

单例模式:代码中注释明确。

C++中的static关键字要搞熟。

单例模式代码:(带释放内存)

#include<iostream>
using namespace std;

class singlecase
{
    class clean
    {
        public:
        ~clean()
        {
            if(singlecase::p){
                delete singlecase::p;
                singlecase::p = NULL;
            }
        }
    };
    private:
        //构造函数私有化
        singlecase(){}
    private:
        //创建singlecase类型静态指针变量用来保存唯一实例
        //类内定义
        static singlecase *p;
    public:
        //定义静态成员函数访问静态指针变量
        static singlecase* getp(){
            if(p == NULL){
                //唯一类对象实例化
                p = new singlecase();
                //借助其他类对象在生命周期结束时调用析构函数间接释放singlecase的唯一对象
                static clean c1;
            }
            return p;
        }
        void test()
        {
            cout<<"测试"<<endl;
        }

};
//类外初始化
singlecase* singlecase::p= NULL;

int main()
{
    //单例模式 
    singlecase *tmp = singlecase::getp();
    tmp->test();
    system("pause");
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值