Final
指定某个虚函数不能在子类中被覆盖,或某个类不能被子类继承
struct Base {
virtual void foo() final;
};
struct A : Base {
void foo();
};
报错:
cannot override ‘final’ function “Base::foo” (declared at line 4)C/C++(1850)
struct Base final {
virtual void foo(;
};
struct A : Base {
void foo();
};
报错: a ‘final’ class type cannot be used as a base classC/C++(1904)
base ‘Base’ is marked ‘final’
Override
指定一个虚函数覆盖另一个虚函数
struct Base {
virtual void foo() {
std::cout << "Base" << std::endl;
};
};
struct A : Base {
void foo() override {
std::cout << "A" << std::endl;
};
void foo(int i) override;
};
void foo(int i) override;
报错: member function declared with ‘override’ does not override a base class memberC/C++(1455)
- override 修饰的函数在基类中必须描述一致