c++多态:一个继承两个父类的子类构造函数调用的过程的顺序是怎么样的,下面为什么是这个调用顺序

#include<iostream>usingnamespacestd;classA{public:A(){cout<<"A"<<endl;}A(inti){cout<<... #include<iostream>

using namespace std;

class A{
public:
A(){
cout<<"A"<<endl;
}
A(int i){
cout<<"A&"<<i<<endl;
}
~A(){
cout<<"~A"<<endl;
}

};
class B{
public:
B(){
cout<<"B"<<endl;
}
B(int i){
cout<<"B&"<<i<<endl;
}
~B(){
cout<<"~B"<<endl;
}
};
class C:public A, public B
{
public:
C(int a, int b, int c):A1(a),B(b){/*在A1(a)是A(a)时输出是:A&1,B&1,A,B,A&3,C&3,换成A1(a)后输出是:A,B&2,A&1,B,A&3,C&3*/
A2 = new A(c);
cout<<"C&"<<c<<endl;
}
~C(){
delete A2;
cout<<"~C"<<endl;
}
private:
A A1;
B B1;
A *A2;
int t;
};

int main(){
C(1,2,3);
return 0;
}
展开
 我来答
捣蒜大师Edison
2018-07-22 · TA获得超过2963个赞
知道大有可为答主
回答量:3825
采纳率:77%
帮助的人:1346万
展开全部
先构造父类,再构造子类。

所以先构造父类A B
再构子类成员A1 B1
再调用C的构造函数构造A2
更多追问追答
追问
这是常规的顺序,我比较好奇的是将A(a)改成A1(a)之后的构造顺序,为什么输出会变成A,B&2,A&1,B,A&3,C&3,即A的无参构造和一个参数的构造函数掉了个个,而不是直接将无参构造的A1插入到最前面
追答
第一个还是父类A啊
你没给父类的构造函数参数当然就是磨人的无参数的了
给A1有参数了当然后面就是有参数的了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式