C++11: override 说明符

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

语法

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

 
声明符 虚说明符序列(可选) 纯说明符(可选)(1) 
 
声明符 虚说明符序列(可选) 函数体(2) 
 

1) 在成员函数声明中,override 可在紧随声明符之后并在 纯说明符 之前(若使用)的虚说明符序列 中出现。

2) 在类定义内成员函数定义中,override 可在紧随声明符之后并紧接 函数体 之前的 虚说明符序列 中出现。

两种情况中,若使用 虚说明符序列 ,则它必须是 overridefinalfinal override 或 override 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 非虚
};

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值