c++ - 覆盖子子类中的虚函数,但不在子类中
问题描述
我正在开发一个编译器,我正在尝试构建用于存储表达式(AST)的数据结构。
我想知道的是我是否可以做一些事情,将父类继承到子类中,但不能像下面那样覆盖虚函数。而是在孩子的孩子中覆盖它。
只有在最低类 Add_expr 中评估它才有意义。我还假设,因为我将 evaluate() = 设置为 0,所以所有子类都需要它,否则如果未实现,我将收到链接器错误。
struct Expr {
virtual void evaluate() const = 0;
}
struct Binary_expr : public Expr {
}
struct Add_expr : public Binary_expr {
virtual void evaluate() const override {
}
}
解决方案
对于未被覆盖的纯虚函数(纯虚析构函数除外),您不太可能会收到链接器错误。相反,您将遇到编译器错误,但前提是您尝试实例化具有仍未被覆盖的纯虚函数的类。
这意味着,在您的问题中,除非您尝试实例化 type 的对象,否则它将全部正常工作Binary_expr
。
推荐阅读
- arrays - Receive array of either Int or Double in Scala function
- node.js - 如何使用 lowdb 找到内部数组?
- java - 空对象引用上的 ActionBar.setDisplayHomeAsUpEnabled
- c# - WPF:使用 mysql 将自定义类绑定到数据网格
- c# - 如何从控件阵列中获得最小面积的控制?
- laravel - Laravel 错误:SQLSTATE[HY000]:一般错误:1 在“?”附近
- android - 如何在 Android 中实际使用 Material Design 工具生成的调色板?
- node.js - 为什么我的 NodeJS 应用程序无法正常工作?
- java - 知道 Executor Service 何时完成所有提交的任务的最佳方法是什么
- selenium-webdriver - 在 Testlistener 中读取 XML 参数值