为了账号安全,请及时绑定邮箱和手机立即绑定

C++中子类构造函数调用时父类构造函数调用的问题

C++中子类构造函数调用时父类构造函数调用的问题

C++
kid123 2016-04-08 23:09:13
实例化子类对象时,先进行父类构造函数,如果父类构造函数中既有默认构造函数也有有参构造函数,那么会调用哪个呢?
查看完整描述

4 回答

已采纳
?
guozhchun

TA贡献103条经验 获得超76个赞

默认调用无参的构造函数。如果需要调用有参的构造函数,需要自己指定。格式为:派生类名(形参表) : 基类名(实参表)

例如:

class A
{
    public:
        A();
        A(int a);
};

class B
{
    public:
        B();
        B(int b);
};

// 如果定义 B 类构造函数为 B(){ /* other code */ },或者 B(int b){ /* other code */ } 时,调用 A 类的 A() 构造函数
// 如果定义 B 类构造函数为 B():A(3){ /* other code */ }, 或者 B(int b): A(b){ /* other code */ }时,调用 A 类的 A(int a)构造函数


查看完整回答
1 反对 回复 2016-04-09
?
Asan_Cai

TA贡献2条经验 获得超3个赞

如果没有使用初始化列表显示调用父类构造函数,就调用父类默认构造函数

查看完整回答
2 反对 回复 2016-11-03
?
慕神3775235

TA贡献6条经验 获得超7个赞

(1)如果参数有默认值,则调用时子类构造函数不进行向父类构造函数传参就会发生错误
(2)如果参数无默认值,调用时传参的是调用有参数的,不调用时调用的是默认的父类构造函数


查看完整回答
1 反对 回复 2016-04-11
?
乱舞的旋律

TA贡献105条经验 获得超38个赞

看你怎么实例化子类咯,如果 子类参数设置是传给父类的构造函数的话写法正确的那就是有参的啊,如果子类没有参数,那子类父类肯定都是默认构造

查看完整回答
反对 回复 2016-04-09
  • 4 回答
  • 0 关注
  • 3047 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信