/*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 :最后执行构造函数中的输出语句。