C++ 单例职责

#include<iostream>
using namespace std;


class CPerson
{
private:                    //1.屏蔽所有类外可以定义对象方式:将构造和析构函数设置为私有。
    CPerson()
    {

    }
    ~CPerson()
    {
        flag=false;     //4.私有析构函数,防止类外修改flag值,影响单例职责
    }
private:
    static bool flag;       //3.静态成员函数只能使用静态变量,并且在类外初始化
public:
    static CPerson * CreateObject() //2.设置接口:因为要 不定义对象而去用类中成员函数,所以设置静态成员函数。返回一个类的对象
    {
        if(flag==false)             
        {
            CPerson *pCPerson=new CPerson;  //随用随取,所以在堆区new对象
            flag=true;  
            return pCPerson;
        }else
        {
            return 0;
        }
    }

    static void  DestroyObject(CPerson *pTemp)
    {
        delete pTemp;   //5.自动执行析构函数,将flag设置为false
        pTemp=NULL;
    }
};
bool CPerson::flag=false;   //类外初始化
int main()
{
    CPerson *pTemp1=CPerson::CreateObject();//不定义对象而调用类中成员函数
    CPerson::DestroyObject(pTemp1);         //使用之后删除指针

    CPerson *pTemp2=CPerson::CreateObject();



    system("pause");
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值