当时看到这个题目就想到了单例模式,可是不知道在哪里判断次数,刚开始打算放到构造函数里抛出异常的,现在想想还是没有真正理解单例模式。
class A
{
public:
//this function is static !
static A* instance(void)
{
if (n<3) { return new A; }
else return (A*)0;
}
//this func is nont static !
void print(void) const { cout<<n<<endl;}
private:
A(){ ++n;}
static int n;
};
int A::n=0;//do not forget to init n
int main( void )
{
A* p=NULL;
for (int i=0;i<5;i++)
{
p=A::instance();
if (p!=NULL)
{
p->print();
}
}
return 0;
}
![](https://img-my.csdn.net/uploads/201210/24/1351049121_8309.png)