作用
override 关键字在 C++ 中用于:
- 明确声明该函数是重写(覆盖)基类的虚函数
- 帮助编译器进行检查,确保确实重写了基类中的虚函数
不写 override 可能带来的问题
// 基类
struct Base {
virtual void foo() { }
};
// 派生类 - 有拼写错误
struct Derived : Base {
// 本想重写基类的foo(),但不小心写错了函数名
virtual void fooo() { } // 没有override关键字,编译器不会报错
};使用 override 的好处
struct Derived : Base {
virtual void fooo() override { } // 编译报错!因为基类没有fooo()函数
};常见错误场景
- 函数名拼写错误
- 参数类型不匹配
- 函数是否为 const 不匹配
- 返回类型不匹配
例如在示例代码中:
struct Dynamic : public Base {
const std::string to_string() override // 确保重写了Base中的to_string()
{
return vkb::to_string(value);
}
};总结
- override 不是必须的,但强烈建议使用
- 它是一个编译时检查工具,可以提前发现错误
- 增加代码可读性,清晰表明这是一个重写函数
- 没有运行时开销,纯粹的编译期检查
最佳实践是:只要是重写虚函数,就加上 override 关键字。这样可以避免很多潜在的 bug,同时让代码意图更清晰。