☰
  • 首页
  • 规则分类
  • 项目介绍
search
•••

重写的虚函数应声明为 override 或 final

6.3.5 ID_missingExplicitOverride
目录 › next › previous

将重写的虚函数都声明为 override 或 final 有利于提高可读性,并可确保虚函数被有效重写。

示例:

class A {
    virtual int foo();
    virtual int bar();
};

class B: public A {
    int foo();          // Non-compliant
    virtual int bar();  // Non-compliant
};

例中 B 重写 A 的 foo 和 bar 这两个虚函数,如果不看 A 的声明,则看不出 B::foo 是虚函数,也看不出 B::bar 是重写的虚函数。

改为如下方式会清晰很多:

class B: public A {
    int foo() override;  // Compliant
    int bar() override;  // Compliant
};

而且当重写的函数名、参数、返回类型与基类声明不符时,不能通过编译,可及时修正问题。

依据

ISO/IEC 14882:2011 10.3(4 5) ISO/IEC 14882:2017 13.3(4 5)

参考

C++ Core Guidelines C.128
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.