小编典典

'override' 关键字只是检查被覆盖的虚拟方法吗?

all

据我了解,override在 C++11 中引入关键字无非是检查以确保正在实现的函数是基类中函数的overrideing 。virtual

是这样吗?


阅读 132

收藏
2022-05-20

共1个答案

小编典典

确实是这样的想法。关键是您要明确说明您的意思,以便可以诊断出其他无声的错误:

struct Base
{
    virtual int foo() const;
};

struct Derived : Base
{
    virtual int foo()   // whoops!
    {
       // ...
    }
};

上面的代码可以编译,但不是您的意思(注意缺少的const)。如果您改为使用virtual int foo() override,那么您将收到编译器错误,表明您的函数实际上并未覆盖任何内容。

2022-05-20