#include<iostream>
using namespace std;
class CPeople
{
private:
static int flag;//判断是否定义了对象
private:
CPeople()//构造函数为私有
{
}
~CPeople()//析构函数为私有
{
CPeople::flag=0;//变量改变
}
public :
static CPeople *GetObject()//获取一个对象
{
if(CPeople::flag==0)//判断是否可以获取
{
CPeople::flag=1;//变量改变
return new CPeople;//返回对象
}
return NULL;//已定义返回NULL
}
static void DeleteObject(CPeople *&pObject)//删除对象
{
delete pObject;
pObject=NULL;
}
void Show()//检测是否定义了对象
{
cout<<"CPeople::Show()"<<endl;
}
};
int CPeople::flag=0;//静态成员在类外初始化
int main()
{
CPeople *p=CPeople::GetObject();
if(p!=NULL)
{
p->Show();
}
else
{
cout<<"NULL"<<endl;
}
CPeople::DeleteObject(p);
p=CPeople::GetObject();
if(p!=NULL)
{
p->Show();
}
else
{
cout<<"NULL"<<endl;
}
//CPeople kk(*p);//不能调用析构函数进行析构
return 0;
}