override确保该函数是虚函数并覆盖超类定义(否则,生成编译时错误),同时final表示子类不能进一步覆盖它.所以是的,当你重写超类函数并且你不希望子类再次覆盖它时,它是完全合理的.
例如,考虑以下层次结构:
class A {
public:
virtual void foo() {}
};
class B: public A {
public:
void foo() override final {} // <-- Overrides A::foo
};
class C: public B {
public:
//void foo() override {} <-- Error here!
};
Run Code Online (Sandbox Code Playgroud)