[英]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.