override 指定符(C++11 起)

来自cppreference.com
< cpp‎ | language

指定一个虚函数覆写另一个虚函数。

目录

[编辑] 语法

标识符 override ,若紧随成员函数声明或类定义内成员函数定义语法中的声明器之后使用。

declarator virt-specifier-seq(可选) pure-specifier(可选) (1)
declarator virt-specifier-seq(可选) function-body (2)
1) 在成员函数声明中,若使用 override ,则它可紧随声明器之后的 virt-specifier-seq ,并先于 纯指定符 出现。
2) 在类定义内成员函数定义中, override 可于紧随声明器之后的 virt-specifier-seq ,并正好先于 function-body 出现。

两种情况中,若使用 virt-specifier-seq ,则它必须是 overridefinalfinal overrideoverride final 之一。

[编辑] 解释

在成员函数声明或定义中, override 确保该函数为虚并覆写来自基类的虚函数。若此非真则程序为病态(生成编译错误)。

override 是在成员函数声明器后使用时拥有特殊含义的标识符:其他情况下它不是保留的关键词。

[编辑] 示例

struct A
{
    virtual void foo();
    void bar();
};
 
struct B : A
{
    void foo() const override; // 错误: B::foo 不覆写 A::foo
                               // (签名不匹配)
    void foo() override; // OK : B::foo 覆写 A::foo
    void bar() override; // 错误: A::bar 非虚
};

[编辑] 参阅