c++ - C++中虚继承和简单继承的区别

标签 c++ inheritance virtual

<分区>

有什么区别

class A {};
class Z: public A {};

class A {};
class Z: virtual public A {};

最佳答案

假设没有额外的继承层次,在这种情况下没有区别。看到差异的唯一方法是通过多种方式继承同一个类 - 例如,如下所示:

class ZA : public Z, public A {};

对比

class ZA : virtual public Z, virtual public A {};

在第一种情况下,ZA 将有两个具有独立 A 的区域 - 一个直接继承,一个通过 Z 继承。在第二种情况下,只有一个 A,通过两条路径继承并共享。

这是一个例子:

Virtual vs. Regular inheritance

关于c++ - C++中虚继承和简单继承的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18787977/

相关文章:

c++ - 欧拉计划挑战 3 : Finding the largest prime factor of a large number

c++ - OpenGL Nvidia 驱动程序 259.12 纹理不工作

c++ - 如何让模板化函数重载接受来自不同基类的派生类?

c++ - Herb Sutter 关于将虚拟函数设为私有(private)的文章

c++ - 带有 OpenGL 纹理的 SDL2 显示不正确

c++ - 无锁竞技场分配器实现 - 正确吗?

php - PHP 7 的 self 在什么情况下引用基类?

c++ - 在构造函数中调用纯虚函数会报错

c++ - "virtual base class in the case of multilevel inheritance"有意义吗

C++模板设计问题