一、菱形继承
菱形继承结构:
- 菱形继承在现实中是存在的,例如人、学生、研究生、在职研究生的关系就是属于菱形继承。
- 但是明显看出
普通的菱形继承结构出现了数据冗余
,而虚继承就是解决菱形继承带来的数据冗余问题。
二、虚继承
语法:
class 派生类 :virtual 继承权限 基类;
菱形继承代码:
class Base
{
private:
int top;
};
class Son1 : virtual Base
{
private:
int first;
};
class Son2 : virtual Base
{
private:
int second;
};
class Grandson : public Son1, public Son2
{
private:
int low;
};
虚继承解决数据冗余后的内存结构: