一道c++题目求大佬解释一下为什么是这个结果

#include<iostream>usingnamespacestd;classA{public:A(constchar*s){cout<<s<<endl;}~A(){... #include<iostream>
using namespace std ;
class A
{ public :
A(const char *s) { cout << s << endl ; }
~A(){}
};
class B : virtual public A
{ public :
B(const char *s1, const char *s2) : A( s1 )
{ cout << s2 << endl ; }
};
class C : virtual public A
{ public :
C(const char *s1, const char *s2):A(s1)
{ cout << s2 << endl ; }
};
class D : public B, public C
{ public :
D( const char *s1, const char *s2, const char *s3, const char *s4 )
: B( s1, s2 ), C( s1, s3 ), A( s1 )
{ cout << s4 << endl ; }
};
int main()
{ D *ptr = new D( "class A", "class B", "class C", "class D" ) ;
delete ptr;
}
【解答】
class A
class B
class C
class D
展开
 我来答
百度网友c281b4c
2017-06-28 · TA获得超过2293个赞
知道大有可为答主
回答量:2382
采纳率:50%
帮助的人:1033万
展开全部
因为构造函数是从基类向派生类进行初始化的。
所以,先输出A,再B,C,D.

希望你尽量少发重复的问题。
追问
额  不好意思 再问一下    跟那个虚函数有关系么
追答
没关系,上面没有虚函数,有几个虚拟继承。影响不大。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式