C++ final 和 override 说明符

来源:互联网 发布:mac怎么文件夹压缩 编辑:程序博客网 时间:2024/05/22 08:27

1、final

Specifies that a virtual function cannot be overridden in a derived class or that a class cannot be inherited from.——http://en.cppreference.com/

它可以指定一个虚函数不能被覆盖或者一个类不能被继承

struct Base{    virtual void foo();}; struct A : Base{    virtual void foo() final; // A::foo is final    void bar() final; // Error: non-virtual function cannot be final}; struct B final : A // struct B is final{    void foo(); // Error: foo cannot be overridden as it's final in A}; struct C : B // Error: B is final{};
2、override

Specifies that a virtual function overrides another virtual function.

——http://en.cppreference.com/

如果被指定的函数未覆盖基类中的虚函数,将报错

struct A{    virtual void foo();    void bar();}; struct B : A{    void foo() const override; // Error: B::foo does not override A::foo                               // (signature mismatch)    void foo() override; // OK: B::foo overrides A::foo    void bar() override; // Error: A::bar is not virtual};

这两个说明符可能在一般的教材中很少提到,但非常有用,可以避免无意写错了参数导致出现难以发现的错误。

0 0
原创粉丝点击