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