簡體   English   中英

抽象類繼承具有相同功能名稱的另一個抽象類

[英]Abstract class inheriting another abstract class with the same function name

 class subscriber
 {
 public:
      virtual void update() = 0;
 }

 class entity : public subsriber
 {
 public:
      virtual void update() = 0;
 }

 class myObject : public entity
 {
 public:
      virtual void update()
       {
        do_things();
       }
 }

 subscriber * ptr = new myObject; //will use shared_ptr, but here i want simplicity

  ptr->update(); 

問題是,是否將調用適當的更新功能(在myObject中實現的更新功能)? 在一個“家族”中擁有兩個具有相同名稱的純虛擬函數是否有效?

將調用適當的更新功能(在myObject中實現的更新功能)嗎?

是的,它將被調用。

在一個“家族”中擁有兩個具有相同名稱的純虛擬函數是否有效?

第二個聲明(即在entity類內部)沒有向家族引入第二個純虛函數:簽名是相同的,因此update()是單個虛函數。 而且,沒有必要第二次聲明它: entity將保持抽象狀態,並且即使您刪除了第二個聲明也可以訪問update()方法。

虛函數或虛方法是一種函數或方法,其行為可以在繼承類內被具有相同簽名的函數覆蓋。

所以答案是肯定的

暫無
暫無

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

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