2013-06-01 112 views
-1

也許這是一個非常基本的問題,但我的面向對象體驗來自Java,這就是爲什麼我不確定這個問題。虛擬方法和多重繼承

class A 
    | 
class B 
    | 
class C 

我有class A具有A::doSmth()作爲virtual protected方法。我的class B繼承自class A並重新實​​施doSmth()作爲private方法。現在我想創建class C,我想修改該類的doSmth()方法。我想我需要做doSmth()方法class B虛擬,是嗎?或者從class B繼承class AdoSmth()是虛擬的那裏,我可以簡單地修改它在class C以及?

回答

0

我需要在B類虛擬doSmth()方法,是嗎?

不,你不這樣做,如果它已經宣佈在Avirtual需要。 doSmth()將在從A派生的所有類型中爲虛擬。如果您在每個派生類型中聲明virtual以覆蓋它,則可能會有助於使代碼更具可讀性。

0

不,在C++中,如果您將特定函數聲明爲虛函數,那麼將通過派生類變爲虛擬。然而,在派生類中添加虛擬提高了可讀性和理解性,因此它是一種良好的練習