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内容。

猜你喜欢

转载自www.cnblogs.com/fewolflion/p/12968629.html
今日推荐