final是c++11引入的说明符,可以修饰在类或者类成员函数尾部。
final修饰类时,表示该类不能被继承。
cpp
class A final
{
};
上例表明,类A是一个不能被继承的类。
cpp
class A {
public:
virtual void bar();
};
class B final: public A {
public:
void bar() override;
};
类B继承了类A,类B是一个不能被继承的类,因为它有final修饰符。
final修饰类成员函数时,声明了成员函数是一个虚函数,且该虚函数不可在派生类中被覆盖。
cpp
class A {
public:
virtual void bar();
};
class B : public A {
public:
void bar() override final;
};
类B继承了类A,类B也可以被其它类继承。但是类B中的成员函数bar(),不能被它的子类重写,因为该函数有final修饰。