有两个用途
1.修饰类,禁止该类被继承
class A final
{
public:
virtual void func() const;
};
class B: A //error
{
public:
void func() const override final; //OK
};
类A被final修饰,所以类B无法继承类A
2.只能修饰虚函数,不能修饰类成员函数
class A
{
public:
virtual void func() const;
};
class B: A
{
public:
void func() const override final; //OK
};
class C: B
{
public:
void func()const; //error, B::func is final
};