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

C++重写withdraw虚函数报Expected function body编译错误

错误根因

触发Expected function body after function declarator编译错误的直接原因是override关键字使用位置错误:C++语法规定override仅能用于类定义内部的虚成员函数声明处,不允许出现在类外部的成员函数定义位置。
你贴的代码是类外的成员函数实现,在函数头添加override属于非法语法,编译器无法解析,就会抛出该错误。

修复方案
  • 删除类外函数实现上的override关键字,修正后的实现代码如下:
bool Checking_Account::withdraw (double amount) {
    amount += per_check_fee;
    return Account::withdraw(amount);
}
  • 确认Checking_Account类的内部声明处,已经为withdraw函数添加override限定符,保证编译器做重写合法性校验,类内声明参考写法:
class Checking_Account : public Account {
private:
    double per_check_fee;
public:
    // 其余构造函数、成员函数声明
    bool withdraw(double amount) override; // *override仅需写在类内声明处*
};
连带排查点

如果删除类外的override后仍然报同类错误,依次检查以下高频问题:

  • 确认Checking_Account类的定义末尾没有漏掉收尾的分号;,类定义漏分号是触发该类语法错误的最常见诱因
  • 确认基类Account中的withdraw函数是虚函数(声明时带virtual关键字),否则不存在虚函数重写的基础
  • 确认子类withdraw的函数签名和基类完全匹配:参数列表、const修饰符完全一致,返回值为基类对应函数返回值的协变类型,签名不匹配时重写不成立

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 10:48:15