什么是虚继承?

Posted 凯撒大猩猩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是虚继承?相关的知识,希望对你有一定的参考价值。

虚拟继承是多重继承中特有的概念,

类D继承自类B1,B2,而类B1,B2都继承自类A,

当类A为非虚基类,即类B1,B2非虚继承类A时,继承关系如下图:

A           A

↓            ↓

B1         B2

 ↘   D  ↙

代码如下:

1 class A{};
2 class B1 : public A{};
3 class B2 : public A{};
4 class D : public B1, public B2{};

 

因此,为了节省内存空间,可以将类A定义为虚基类,即类B1,B2虚继承类A,继承关系如下:

       A

 ↙       ↘

B1         B2

 ↘   D   ↙

代码如下:

1 class A{};
2 class B1 : virtual public A{};
3 class B2 : virtual public A{};
4 class D : public B1, public B2{};

 

以上是关于什么是虚继承?的主要内容,如果未能解决你的问题,请参考以下文章

转载:什么是虚函数

C++virtual函数重写,在继承的时候没有写关键字也仍然是虚函数吗?

为什么析构函数必须是虚函数?为什么C++默认的析构函数不是虚函数

虚继承(c++常问问题九)

C++多态

类中的析构函数是否是虚函数