/*copyright(c)2016.烟台大学计算机学院
* All rights reserved,
* 文件名称:text.Cpp
* 作者:舒文超
* 完成日期:2016年4月30日
* 版本号:vc++6.0
* 问题描述:阅读程序写出程序运行的结果
*/
#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<<"Derived 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;
}
运行结果:
Base constructor.--E :因为Base是一个虚基类,所以初始化只进行一次,也就是只执行了第三个。
Derived1 constructor.--D :对derived1进行初始化,输出语句。
Derived2 constructor.--B :对derived2进行初始化,输出语句。
Base constructor.--F :对MyDerived中的Base数据成员进行初始化,输出语句。
MyDerived constructor.--G :最后执行构造函数中的输出语句。