[英]C++ - Override virtual function and polymorphism
我想我對虛擬行為沒有一個非常基本的概念。 我想創建以下層次結構:
class Parser{
virtual Parsable parse() = 0;
}
class SpecialParser : public Parser{
SpecialParsable parse() override; // implemented
}
顯然SpecialParsable
類從Parsable
繼承。
由於簽名不同,這會給我返回錯誤。 (SpecialParser::parse() returns SpecialParsable instead of Parsable)
。
現在,Parsable顯然是一個抽象類,我不想使其實例化。 我不明白為什么不應該這樣做,因為SpecialParsable只是Parsable的特定實現。
提前致謝,
C ++中的動態多態性依賴於間接性。 如果返回指針(或引用),則示例將編譯並按預期運行。 這稱為“協變量返回類型”:
class Parser {
virtual Parsable* parse() = 0;
};
class SpecialParser : public Parser {
SpecialParsable* parse() override; // implemented
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.