除了继承之外,类还需要将其函数作为虚拟函数吗?
在运行时会发生什么,其中基类被继承,而派生类没有实现一些基类函数,第三个类调用在基类中定义为虚拟的未定义方法。seg错误或者它会调用基类函数吗?
如果我不想在派生类上定义基类中的所有函数,但仍然有必要的继承,该怎么办?
发布于 2011-08-22 14:24:41
除了继承之外,类还需要什么其他原因才能将其函数作为虚拟函数?
如果您不处理继承,那么使用virtual函数是不合理的。两者都是为对方准备的。
在运行时发生了什么,其中一个基类被继承,而派生类没有实现一些基类函数,而第三个类调用了在基类中定义为虚的未定义方法。seg错误或者它会调用基类函数吗?
如果派生类在其主体中根本没有对virtual函数进行任何声明,那么(直接)基类virtual函数将通过派生类object来调用。另一方面,如果您只是在派生类中声明virtual函数,而没有定义它,那么这是一个链接器错误。无分段故障。
如果我不想在派生类上定义基类中的所有函数,但仍然具有必要的继承,该怎么办?
虽然这一点并不清楚,但我要说的是,您根本不需要在派生类中声明/定义virtual函数(您不希望这样做)。它将使用基类virtual函数。
发布于 2011-08-22 14:25:04
如果不重新实现virtual方法,调用方将调用基类方法。这就是使用继承的意义,IMO。
如果不希望基类实现虚方法,可以这样声明它:
class Demo {
void foo() = 0;
};这就是所谓的抽象类。请注意,您不能创建此类类的实例。任何从Demo继承的类都必须实现foo(),否则它也将是一个抽象类,因此不能实例化。
https://stackoverflow.com/questions/7143772
复制相似问题