You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

纯虚函数的继承问题咨询:派生类是否同时存在重写与继承的纯虚函数?

纯虚函数继承与重写的问题解答

结论:派生类B中并不会同时存在重写的display函数和继承自A的纯虚display函数,具体原因可以从C++虚函数机制的本质来理解:

  • 当派生类重写基类的纯虚函数时,这是一种**接口覆盖(override)**行为,而非新增同名函数。基类的纯虚函数只是定义了一个必须被实现的抽象接口,派生类完成重写后,这个接口就被派生类的具体实现所替代,不会在派生类中保留基类纯虚函数的独立存在。
  • 基类的纯虚函数本身没有函数体,它的作用是强制派生类提供实现。一旦派生类B重写了display,B就不再是抽象类,可以正常实例化对象;如果B没有重写,那它会继承基类的纯虚属性,成为抽象类,无法实例化。
  • 你可以通过实际代码验证:创建B的对象B b;并调用b.display();,只会输出Always,这说明此时调用的是B自身重写的函数,不存在所谓“继承自A的纯虚display函数”可供调用——纯虚函数没有实现,也不会在派生类中作为独立函数存在。

额外区分一个容易混淆的概念:这里的重写和函数重载完全不同。重载是同一作用域下同名但参数列表不同的函数,而重写是派生类对基类虚函数的接口实现,二者作用域不同,且重写会覆盖基类虚函数在虚表中的条目。

内容的提问来源于stack exchange,提问作者amm98d

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:26:21