在C ++中重新定义纯虚方法

时间:2010-09-17 08:06:36

标签: c++ oop pure-virtual

您是否必须声明替换基类中的纯虚函数的方法?如果是这样,为什么?因为基类已经将方法声明为纯虚拟,因此必须存在于派生类中,所以在您可以在类定义之外实现它们之前,不需要在派生类中重新声明它们。你不同意吗?

3 个答案:

答案 0 :(得分:7)

是的,你有。

这样做的原因是让编译器知道虚拟方法是由派生类实现的,因为派生类也可以是抽象的并且具有虚方法。由于编译单元是单独编译的,因此编译器在编译使用派生calss的另一个编译单元时是否由派生类实现虚方法,从而不知道它是否是抽象类。

答案 1 :(得分:2)

您不必覆盖基类的声明。如果不这样做,派生类也只是抽象的。

因此,派生类中的声明有一个明确的目的,你需要它。

答案 2 :(得分:1)

名称所说的类定义是类的声明。如果你没有声明派生函数(来自纯虚函数)编译器将无法找到它。

只有在实例化类时,才必须派生纯虚函数。你可以让纯虚函数成为一个类A,一个继承自类A但没有派生函数的类B,然后是一个继承自B类并重新实现派生函数的类C.在这种情况下,只能实例化C类,那么为什么编译器应该在B类中添加派生类的声明呢?这就是为什么你必须向编译器指出哪个类正在重新实现纯虚函数。