重寫派生 C 類別中的虛函數:有必要嗎?
C 提供了「virtual」關鍵字來在衍生類別中啟用多態行為。多態性允許不同的類別實現同一功能的不同版本。但是,出現了一個問題:在衍生類別中重寫虛擬函數時是否有必要指定「virtual」?
考慮以下結構體定義:
struct A { virtual void hello() = 0; };
這定義了一個抽象具有純虛函數 hello() 的基類 A。現在,讓我們檢查在衍生類別 B 中重寫此函數的兩種方法:
Approach #1: struct B : public A { virtual void hello() { ... } };
Approach #2: struct B : public A { void hello() { ... } };
問題是:這兩種方法之間有什麼區別嗎?
答案:
答案是否定的,這兩種方法之間的行為沒有區別。然而,它們的用法有一個微妙的區別。
在提供的範例中,重寫的函數已在基底類別 A 中宣告為 virtual。因此,兩種方法都將導致多態行為。兩種方法之間的選擇取決於您喜歡的程式碼的清晰度和一致性。
以上是重寫或不重寫:在 C 中重寫虛擬函數時是否需要明確聲明「虛擬」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!