代码
#include <iostream>
using namespace std;
class Base
{
public:
Base(char i) { cout<<"Base constructor. --"<<i<<endl; }
};
class Derived1:virtual public Base
{
public:
Derived1(char i,char j):Base(i)
{
cout<<"Derived1 constructor. --"<<j<<endl;
}
};
class Derived2:virtual public Base
{
public:
Derived2(char i,char j):Base(i)
{
cout<<"Derived2 constructor. --"<<j<<endl;
}
};
class MyDerived:public Derived1,public Derived2
{
public:
MyDerived(char i,char j,char k,char l,char m,char n,char x): Derived2(i,j), Derived1(k,l), Base(m), d(n)
{
cout<<"MyDerived constructor. --"<<x<<endl;
}
private:
Base d;
};
int main()
{
MyDerived obj('A','B','C','D','E','F','G');
return 0;
}
总结:刚开始是 A,B,C,D,E,F,G;后来看了视频是 E,B,D,F,G. 就是得不出正确答案,,,,追踪了一下,是先执行的1,后2。可是My中不是先调用2,后调用1吗?
174

被折叠的 条评论
为什么被折叠?



