实例化子类对象时,先进行父类构造函数,如果父类构造函数中既有默认构造函数也有有参构造函数,那么会调用哪个呢?
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)构造函数
慕神3775235
TA贡献6条经验 获得超7个赞
(1)如果参数有默认值,则调用时子类构造函数不进行向父类构造函数传参就会发生错误 (2)如果参数无默认值,调用时传参的是调用有参数的,不调用时调用的是默认的父类构造函数
- 4 回答
- 0 关注
- 3047 浏览
添加回答
举报
0/150
提交
取消