Example of a virtual inheritance: http://10638473.blog.51cto.com/10628473/1964414
In this article, the show () function in Class A is preceded by the virtual keyword.
Multiple inheritance #include <iostream>using namespace std;class a{public: Int a; a (int a=0): A (a) { cout<< "A base class A::a ()" <<endl; } ~a () { cout<< "A base class A::~a ()" <<endl; } virtual void show () { cout<< "A base class A::a=" <<a<<endl; }};class b:virtual public a{protected: int b;public: b (int a=0,int b=0): A (a), B (b) { cout<< "B Subclass B:b ()" <<endl; } ~b () { cout<< "B-Subclass B:~b ()" <<ENDL;&NBSP;&NBSP;&NBSP;&NBSP;} void show () { cout<< "B-Subclass b::b=" <<b<<endl; }};class c:virtual public a{protected: int c;public: c (int a=0,int c= 0): A (a), C (c) { cout<< "C Subclass C::c ()" <<endl; } ~c () { cout<< "C Subclass C::~c ()" <<endl; } void show () { cout<< " C Subclass C::c= "<<c<<endl; }};class d:public b,public c{protected: &nbsP;int d;public: d (int a=0,int b=0,int c=0,int d=0):d (d), B (A, a) , C (a,c) { cout<< "D grandson Class D::D ()" < <endl; } ~d () { cout<< "D grandson Class D::~d ()" <<endl; } void show () { cout< < "D grandson class d::c=" <<d<<endl; }};void display (a *p) { p->show ();} Int main (int argc, char *argv[]) { a a (1); b b (2,3); c c (4,5); d d (6,7,8,9); A *p; p=&a; P->show(); p=&b; p->show (); p=&c; p->show (); b *q; q=&d; q->show (); return 0;}
650) this.width=650; "Src=" https://s2.51cto.com/wyfs02/M01/06/55/wKiom1m2ajyg8zYkAABY8_jIzHc861.png-wh_500x0-wm_ 3-wmp_4-s_3924428038.png "title=" 111.png "alt=" Wkiom1m2ajyg8zykaaby8_jizhc861.png-wh_50 "/>
You can compare the results with the previous article.
This article is from the "10628473" blog, please be sure to keep this source http://10638473.blog.51cto.com/10628473/1964418
Virtual inheritance and virtual function examples in C + + multiple inheritance