我正在使用编译器,正在尝试构建用于存储表达式(AST)的数据结构。
我想知道的是,是否可以做一些将父类继承到子类中但不能覆盖如下虚函数的事情。而是在孩子的孩子中覆盖它。
只有在最低的类Add_expr中对其进行评估才有意义。我还假设,因为我将valuate()=设置为0,所以在所有子类中都需要它,否则如果未实现,则会出现链接器错误。
struct Expr {
virtual void evaluate() const = 0;
}
struct Binary_expr : public Expr {
}
struct Add_expr : public Binary_expr {
virtual void evaluate() const override {
}
}
答案 0 :(得分:3)
您不太可能会收到未重写的纯虚函数的链接器错误(纯虚析构函数的特殊例外)。取而代之的是,您将遇到编译器错误,但前提是您尝试实例化仅具有纯虚函数但仍未被覆盖的类。
这意味着,在您的问题中,除非您尝试实例化类型为Binary_expr
的对象,否则所有内容都将正常运行。