思考下:什么时候构造函数需要定义为private?
1,如果一个类的构造函数只有一个且为private,这是可以编译通过的;
class Parent
{
private :
Parent()
{
cout<<"parent :private"<<endl;
}
};
2,如果一个类的构造函数只有一个且是private,如果类的内部没有专门创建实例的代码,则是无法创建任何实例的;
class Parent
{
private :
Parent()
{
cout<<"parent :private"<<endl;
}
};
int main()
{
Parent parent=new Parent();
}
则此程序无法运行
3,如果一个类的构造函数只有一个且是private,如果类的内部有专门创建实例的代码,则只能创建一个或多个实例(根据类内部声明的成员对象个数来定)
class Parent
{
private:
static Parent * parent1;
static Parent * parent2;
Parent()
{
cout<<"parent :private"<<endl;
}
static Parent* GetInstace1()
{
if(parent1!=NULL)
return parent1;
else
parent1=new Parent();
return parent1;
}
static Parent* GetInstace2()
{
if(parent12=NULL)
return parent2;
else
parent2=new Parent();
return parent2;
}
};
Parent * Parent::parent1;
Parent * Parent::parent2;
int main()
{
Parent *