虚基类(P268)

/*

虚基类:
多重继承允许从多个基类共同派生一个派生类。而多重继承有天生的二义性。当共同派生一个派生类的多个基类又有一个共同的基类,则底层的派生类即便添加类名及作用域运算符::也没办法排除二义性。

为了避免产生二义性,C++提供虚基类机制,使得派生类中,继承同一个间接基类的成员仅保留一个版本。
定义虚基类的格式:
class 派生类 :virtual 派生方式 基类名
{
派生类体
};

*/

#include <iostream>
using namespace std;
class A{
public:
int a;
void showa(){
cout<<"a="<<a<<endl;
}
};
class B:virtual public A{
public:
int b;
};
class C:virtual public A{
public:
int c;
};
class D:public B,public C{
public:
int d;
};
int main(){
D Dobj;
Dobj.a = 11;
Dobj.b = 22;
Dobj.showa();
cout<<"Dobj.b="<<Dobj.b<<endl;
return 0;
}

posted @ 2020-04-01 08:55  CollisionDimension  阅读(194)  评论(0)    收藏  举报