作用

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,同时让代码意图更清晰。