C++多重继承中的虚继承和虚函数举例
上一篇虚继承举例:http://10638473.blog.51cto.com/10628473/1964414
本文将A类中的show()函数前加上virtual关键字。
//多重继承#include<iostream>usingnamespacestd;classA{public:inta;A(inta=0):a(a){cout<<"A基类A::A()"<<endl;}~A(){cout<<"A基类A::~A()"<<endl;}virtualvoidshow(){cout<<"A基类A::a="<<a<<endl;}};classB:virtualpublicA{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:virtualpublicA{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;}
可以和上一篇对比一下结果。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。