C++中,继承时,创建子类对象,能否在子类构造函数初始化列表里调用基类构造函数?

然后基类构造函数里直接初始化基类private成员??这一步在子类构造函数右边的初始化列表里进行?

//如果基类没有默认构造函数,则子类的构造函数必须要给定基类的构造函数参数。因为,在类的实例化时是先执行基类构造函数在执行子类构造函数。子类构造函数初始化列表后面直接列出基类构造函数即可,系统会自动调用,不用用户调用。
class A{
public:
A(int x,int y):x(x),y(y){}
private:
int x; int y;
};
class B:public A{
public:
B(int x,int y,int z):A(x,y),z(z){} //子类构造函数初始化列表必须给出基类所需参数
};
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-07-28
不能,你自己写的构造函数体,是在初始化列表执行之后才执行,也就是如果不写在列表里,就会调用默认构造函数构造基类对象部分。追问

不能?为什么?

初始化列表当然是先执行的,这跟不能有什么关系?

追答

你在函数体里面再写的话,等于给基类部分构造两次,肯定不对啊,要是想重新赋值,那直接用语句,不能再用构造函数了。

本回答被网友采纳
相似回答