【发布时间】:2019-11-17 20:10:53
【问题描述】:
我想我没有得到关于虚拟行为的非常基本的概念。 我想创建以下层次结构:
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 的特定实现。
提前致谢,
【问题讨论】:
-
它们需要返回相同的类型。
-
请参阅this thread 了解如何返回对象。而对于不同的返回类型,
SpecialParsable必须继承自Parseable,但我猜是这样的吧?!
标签: c++ overriding virtual covariance