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

C++中override说明符无需virtual?override是否隐含virtual?

C++中override关键字与虚函数的关系解答

关键结论

派生类中带override标记的成员函数,自动继承基类对应函数的virtual属性,就算不写virtual也依然是虚函数,这是C++标准明确规定的行为。

1. 为什么void B::method() override;能正常编译?

基类A的method已经是虚函数,当派生类B的函数加上override时,编译器会验证它是否确实重写了基类的虚函数,同时自动将该函数标记为虚函数。override的核心作用是语法检查——确保你写的函数真的是在重写基类的虚函数,而不是不小心定义了同名的新函数。只要基类有匹配的虚函数,这种写法就完全合法,编译器不会报错。

2. 两种写法的区别?

  • void method() override;:这是简洁的标准写法,函数通过重写基类虚函数自动成为虚函数,无需重复写virtual。
  • virtual void method() override;:显式标注了virtual,功能上和上面完全一致,只是多了一个冗余的关键字。编译器处理时两者没有任何区别,生成的代码也完全相同。

显式写virtual只是让代码的意图更直观(一眼就能看出是虚函数),但从语法和实际运行效果来看,两种写法等价。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 14:36:16