//多重继承#include<iostream>usingnamespacestd;classA{public:inta;A(inta=0):a(a){cout<<"A基类A::A()"<<endl;}~A(){cout<<"A基类A::~A()"<<endl;}voidshow(){cout<<"A基类A::a="<<a<<endl;}};classB:publicA{protected:intb;public:B(inta=0,intb=0):A(a),b(b){cout<<"B子类B:B()"<<endl;}~B(){cout<<"B子类B:~B()"<<endl;}voidshow(){cout<<"B子类B::b="<<b<<endl;}};classC:publicA{protected:intc;public:C(inta=0,intc=0):A(a),c(c){cout<<"C子类C::C()"<<endl;}~C(){cout<<"C子类C::~C()"<<endl;}voidshow(){cout<<"C子类C::c="<<c<<endl;}};classD:publicB,publicC{protected:intd;public:D(inta=0,intb=0,intc=0,intd=0):d(d),B(a,b),C(a,c){cout<<"D孙子类D::D()"<<endl;}~D(){cout<<"D孙子类D::~D()"<<endl;}voidshow(){cout<<"D孙子类D::c="<<d<<endl;}};voidDisplay(A*p){p->show();}intmain(intargc,char*argv[]){Aa(1);Bb(2,3);Cc(4,5);Dd(6,7,8,9);A*p;p=&a;p->show();p=&b;p->show();p=&c;p->show();B*q;q=&d;q->show();return0;}