C ++收紧子类中的函数参数类型

时间:2016-12-12 10:21:06

标签: c++ class inheritance interface

我有一个带有虚函数class A的抽象void fnc(XX*) 在它的子类(class B)中我想收紧函数参数类型(我希望这是正确的单词),因此fnc只接受YY*,它是{{1的子类}}

它不起作用,因为我收到了这个错误:

XX

代码:

invalid new-expression of abstract class type 'C'
because the following virtual functions are pure within 'C':
virtual void A::fnc(XX*)

1 个答案:

答案 0 :(得分:2)

你不能。 C ++中不支持共变函数参数类型。

它一般也不受支持,因为它很容易违反Liskov替代原则。

但是,无论你的代码中发生了什么,都是你重载了这个功能。您添加了另一个需要重写的纯虚函数。原始版本仍未实现,您的编译器会抱怨它。