CPP继承问题

cpp inheritance questions

本文关键字:问题 继承 CPP      更新时间:2023-10-16

除了继承之外,还有什么原因使类需要将其函数设置为虚函数?

在运行时继承基类,派生类没有实现基类的一些功能,并且第三个类调用在基类中定义为virtual的未定义方法时会发生什么?Seg错误还是会调用基类函数?

如果我不想在派生类上定义基类中的所有函数,但仍然有必要的继承,我该怎么办?

除了继承之外,类还需要有什么其他原因它的功能是虚拟的?

如果您不处理继承,那么使用virtual函数就没有合理的用途。

在运行时继承基类时发生的情况派生类不实现基类的一些功能第三类调用定义为virtual的未定义方法在基地。Seg错误还是会调用基类函数?

如果派生类在其体中没有对virtual函数做任何声明,则(直接)基类virtual函数用派生类对象调用。另一方面,如果您只是在派生类中声明virtual函数,但没有定义它,那么这是一个链接器错误。无分段故障。

如果我不想定义我的基类上的派生类,但仍然有必要的继承到位了吗?

虽然这是不清楚的,我想说,你只是不声明/定义virtual函数(这是你不想要的)在派生类。它将使用基类virtual函数。

如果不重新实现virtual方法,调用者将调用基类。在我看来,这就是使用继承的意义所在。

如果不希望基类实现虚方法,可以这样声明:

class Demo {
    void foo() = 0;
};

这就是所谓的抽象类。注意,您不能创建此类的实例。任何从Demo继承的类都必须实现foo(),否则它也将是一个抽象类,因此不能实例化。