C++ 单例职责

来源:互联网 发布:windows 预览计划 编辑:程序博客网 时间:2024/06/06 20:48
#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;}
0 0