簡體   English   中英

虛擬方法和多重繼承

[英]Virtual Methods and Multiple Inheritance

也許這是一個非常基本的問題,但我的面向對象經驗來自 Java,這就是為什么我不確定這個問題。

class A
   |
class B
   |
class C

我有class A它有A::doSmth()作為virtual protected方法。 我的class B繼承自class A並重新實現doSmth()作為private方法。 現在我想創建class C並且我想修改這個類的doSmth()方法。 我想我需要在class B虛擬中創建doSmth()方法,是嗎? 或者因為class B繼承自class A並且doSmth()在那里是虛擬的,我也可以在class C簡單地修改它?

我需要將 B 類中的 doSmth() 方法設為虛擬,是嗎?

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

不,在 C++ 中,如果您將特定函數聲明為虛擬函數,它會通過派生類變為虛擬函數。 然而,在派生類中添加 virtual 可以提高可讀性和理解能力,因此這是一個很好的做法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM