/*用C++实现一个LimitedClass类,该类最多只能被实例化三次,且不能被继承*/
#include <iostream>
using namespace std;
class LimitedClass
{
public:
static LimitedClass* getInstance();
static void setCnt(int);//设置能实例化的次数
~LimitedClass();
//其它方法;
private:
LimitedClass();//私有构造函数,无法被继承
static int cnt;//实例化次数
};
int LimitedClass::cnt=0;//实例化次数类外定义
LimitedClass* LimitedClass::getInstance()
{
if(cnt>0)
{
--cnt;
return new LimitedClass();
}
else
return NULL;
}
LimitedClass::LimitedClass()
{
cout<<"LimitedClass Constructor!!!"<<endl;
}
LimitedClass::~LimitedClass()
{
cout<<"LimitedClass Destructor!!!"<<endl;
}
void LimitedClass::setCnt(int n)
{
cnt=n;
}
//测试程序
int main()
{
LimitedClass::setCnt(3);
LimitedClass *l1=LimitedClass::getInstance();
LimitedClass *l2=LimitedClass::getInstance();
LimitedClass *l3=LimitedClass::getInstance();
if (l1!=NULL && l2!=NULL && l3!=NULL)
{
cout<<"实例化成功3个对象"<<endl;
}
LimitedClass *l4=LimitedClass::getInstance();
if (NULL==l4)
cout<<"第四个实例无法实例化"<<endl;
delete l1;
delete l2;
delete l3;
return 0;
}
使用C++设计一个类,该类最多能被实例化3次且不能被继承
最新推荐文章于 2022-10-11 00:10:16 发布