当"class Foo : public virtual Bar"中出现"virtual"时与"virtual void frob()"有何不同?

8

我理解在成员函数中使用 virtual 的意思,例如 virtual void frob()。但是在类声明中使用,例如 class Foo : public virtual Bar,它的意思是什么?

对于给定的方法,根据以下三个位置 virtual 是否存在,会产生 8 种情况:1)超类的函数;2)该类的继承链;3)这个类的函数。

我认为我理解了 1)和 3)如何相互作用,但是 2)似乎是多余的。是这样吗?我没有理解到什么?


1
这个回答解决了你的问题吗?在C++中,什么是虚基类? - Karl Knechtel
1个回答

11

这就是虚拟继承,当您知道会进行多重继承时使用它。那个页面详细介绍了更多内容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接