C++ final

290 阅读1分钟

有两个用途

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
};

类B的虚函数被final修饰,所以类C的虚函数重载失败