首页 > 解决方案 > 覆盖子子类中的虚函数,但不在子类中

问题描述

我正在开发一个编译器,我正在尝试构建用于存储表达式(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 {

    }
}

标签: c++

解决方案


对于未被覆盖的纯虚函数(纯虚析构函数除外),您不太可能会收到链接器错误。相反,您将遇到编译器错误,但前提是您尝试实例化具有仍未被覆盖的纯虚函数的类。

这意味着,在您的问题中,除非您尝试实例化 type 的对象,否则它将全部正常工作Binary_expr


推荐阅读