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

然后基类构造函数里直接初始化基类private成员??这一步在子类构造函数右边的初始化列表里进行?... 然后基类构造函数里直接初始化基类private成员??这一步在子类构造函数右边的初始化列表里进行? 展开
 我来答
匿名用户
2013-07-29
展开全部
//如果基类没有默认构造函数,则子类的构造函数必须要给定基类的构造函数参数。因为,在类的实例化时是先执行基类构造函数在执行子类构造函数。子类构造函数初始化列表后面直接列出基类构造函数即可,系统会自动调用,不用用户调用。
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){} //子类构造函数初始化列表必须给出基类所需参数
};
zhou2214
2013-07-28 · TA获得超过706个赞
知道小有建树答主
回答量:495
采纳率:0%
帮助的人:511万
展开全部
不能,你自己写的构造函数体,是在初始化列表执行之后才执行,也就是如果不写在列表里,就会调用默认构造函数构造基类对象部分。
追问
不能?为什么?

初始化列表当然是先执行的,这跟不能有什么关系?
追答
你在函数体里面再写的话,等于给基类部分构造两次,肯定不对啊,要是想重新赋值,那直接用语句,不能再用构造函数了。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式