据我了解,override在 C++11 中引入关键字无非是检查以确保正在实现的函数是基类中函数的overrideing 。virtual
override
virtual
是这样吗?
确实是这样的想法。关键是您要明确说明您的意思,以便可以诊断出其他无声的错误:
struct Base { virtual int foo() const; }; struct Derived : Base { virtual int foo() // whoops! { // ... } };
上面的代码可以编译,但不是您的意思(注意缺少的const)。如果您改为使用virtual int foo() override,那么您将收到编译器错误,表明您的函数实际上并未覆盖任何内容。
const
virtual int foo() override