C++ C+中纯虚方法的重新定义+;
是否必须声明替换基类中纯虚函数的方法?若然,原因为何?由于基类已将这些方法声明为纯虚拟的,因此必须存在于派生类中,因此在可以在类定义之外实现它们之前,不必在派生类中重新声明它们。你不同意吗?是的,你同意C++ C+中纯虚方法的重新定义+;,c++,oop,pure-virtual,C++,Oop,Pure Virtual,是否必须声明替换基类中纯虚函数的方法?若然,原因为何?由于基类已将这些方法声明为纯虚拟的,因此必须存在于派生类中,因此在可以在类定义之外实现它们之前,不必在派生类中重新声明它们。你不同意吗?是的,你同意 这样做的原因是让编译器知道虚拟方法是由派生类实现的,因为派生类也可以是抽象的,并且具有虚拟方法。由于编译单元是单独编译的,因此在编译另一个使用派生CALS的编译单元时,编译器将不知道虚拟方法是否由派生类实现,因此也不知道它是否是抽象类。名称所述的类定义就是类的声明。如果不声明派生函数(来自纯虚拟
这样做的原因是让编译器知道虚拟方法是由派生类实现的,因为派生类也可以是抽象的,并且具有虚拟方法。由于编译单元是单独编译的,因此在编译另一个使用派生CALS的编译单元时,编译器将不知道虚拟方法是否由派生类实现,因此也不知道它是否是抽象类。名称所述的类定义就是类的声明。如果不声明派生函数(来自纯虚拟函数),编译器将找不到它
只有在实例化类时,才必须派生纯虚拟函数。您可以使用纯虚函数a类a、继承自类a但没有派生函数的类B,然后是继承自类B并重新实现派生函数的类C。在这种情况下,只能实例化类C,所以为什么编译器应该在类B中添加派生类的声明呢?这就是为什么您必须向编译器指示哪个类正在重新实现纯虚拟函数。您不必重写基类的声明。如果不这样做,派生类也只是抽象的
因此,派生类中的声明有明确的用途,您需要它。这正是语言的定义方式,所以最好习惯它:-)顺便说一句,它可能不存在于派生类中,以防它也是“抽象的”。我相信这是一个重复,如果我找到了原始的,我会链接它…替换->应该更好地被覆盖(OOP行话)