第十二周阅读程序(3):多重继承

来源:互联网 发布:单片机技术论坛 编辑:程序博客网 时间:2024/06/05 06:47

代码:

#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;}


运行结果:

 

学习心得:

声明Base为公有继承的虚基类,而MyDerived为Derived1和Derived2的派生类,系统只执行最后的派生类对虚基类的构造函数的调用,所以Base类的数据成员不会被多次初始化。

0 0
原创粉丝点击