C++11:24final和override关键字

24、final和override关键字

0、课前秀

  • 抛开别的语言不谈,就重新引入两个关键字finaloverride
  • final的意思是最终的,所以可以理解为最后的子类了。

1、final关键字

  • 用于限制某个类不能被继承,或者某个虚函数不能被重写,修饰函数,final只能修饰虚函数,并且要放到类或者函数的后面。
  • final的用法
struct A
{
    //A::foo is final 限定该虚函数不能被重写
    virtual void foo() final;
    //Error: non-virtual function cannot be final,只能修改虚函数
    void bar() final;
};

struct B final : A  //struct B is final
{
    //Error: foo cannot be overridden as it's final in A
    void foo();
};

struct C : B //Error: B is final
{

};

2、override关键字

  • 确保在派生类中声明的重写函数与基类的虚函数有相同的签名,同时也明确表明将会重写基类的虚函数,还可以防止因疏忽把本来想重写基类的虚函数声明成重载。
  • 保证重写虚函数的正确性,又提高代码的可读性。关键字要放到方法后面
  • 代码示例
struct A
{
    virtual void func() {}
};

struct D : A{
    //显式重写
    void func() override
    {

    }
};

ReadMe

  • 语法上get到了,但具体的应用场景还是再实践。20200511看完第1版,《深入应用C++11》7.3内容。

原文链接: https://www.cnblogs.com/fewolflion/p/12968629.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    C++11:24final和override关键字

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/350869

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 上午6:34
下一篇 2023年3月2日 上午6:34

相关推荐