不能被继承,也就是说构造函数和析构函数不能被调用,就只能把他们设置为private了。把构造函数和析构函数设置为private,怎么能再实例化对象,并且只有三次。原来这个实例化三次,而不是用普通的定义对象的方式实例化,而是由该类的内部函数控制的。
#include<iostream>
using namespace std;class myClass
{
private:
int i;
static int count;
myClass(){}
~myClass(){}
public:
static myClass *getNewInstance()
{
if(count<=0)
return NULL;
count--;
return new myClass;
}
static void deleteInstance(myClass *&instance)
{
delete instance;
instance=0;
}
void myf(int j) //测试函数
{
i=j;
cout<<i<<endl;
}
};
int myClass::count=3;
int main()
{
myClass *p1=myClass::getNewInstance();
p1->myf(100);
myClass::deleteInstance(p1);
return 0;
}