我閱讀有關繼承的,我有一個重大的問題,我一直沒能解決幾個小時:虛擬繼承混亂
提供類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'的副本。 –
嘗試:[此搜索](http://stackoverflow.com/search?q=q =虛擬+繼承+%5Bc%2B%2B%5D) –
[在C++虛擬基類?](http://stackoverflow.com/questions/21558/in-c-virtual-base-class) –