#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;
}
C++ 单例职责
最新推荐文章于 2024-01-26 15:10:58 发布