【发布时间】:2011-12-30 05:06:45
【问题描述】:
我正在阅读有关继承的内容,但我遇到了一个几个小时都无法解决的主要问题:
给定一个类Bar 是一个具有virtual 函数的类,
class Bar
{
virtual void Cook();
};
两者有什么区别:
class Foo : public Bar
{
virtual void Cook();
};
和
class Foo : public virtual Bar
{
virtual void Cook();
};
?几个小时的谷歌搜索和阅读得到了很多关于它的用途的信息,但没有人真正告诉我两者之间的区别是什么,这让我更加困惑。
【问题讨论】:
-
我不打算回答,因为这个主题并不值得如此肤浅的处理:但是如果没有
virtual,每个继承自Bar的类都将拥有自己的Bar副本,对于virtual,派生最多的类将只有一个Bar的副本。 -
试试:this search
-
en.wikipedia.org/wiki/Virtual_inheritance 也是一个有用的页面。
标签: c++ inheritance c++11 virtual-inheritance