如果不希望某个类被继承,或不希望某个虚函数被重写,则可以在类名和虚函数后加上 final 关键字,加上 final 关键字后,再被继承或重写,编译器就会报错。
class Base {
public:
virtual void Show(int x) final; // 虚函数
};
class Derived : public Base {
public:
virtual void Show(int x) override; // 重写提示错误
};
因此,一旦一个虚函数被声明为final,则派生类不能再重写它。