📜  C++最终说明符(1)

📅  最后修改于: 2023-12-03 14:59:52.034000             🧑  作者: Mango

C++最终说明符

在C++11中,引入了最终说明符(final specifier)。最终说明符用于在类、虚函数和成员函数上指定不允许后代进行覆盖或继承,进一步保护程序的安全性和可维护性。

类的最终说明符

使用最终说明符将类指定为最终(即不能被继承)。

class Base final {
  // Base is final, cannot be inherited
};
虚函数的最终说明符

虚函数可以被派生类覆盖,但可以通过最终说明符阻止后代进行覆盖。

class Base {
public:
  virtual void foo() const;
  virtual void bar() const final; // bar是最终的,不能在派生类中覆盖
};

class Derived : public Base {
public:
  void foo() const override; // ok
  // void bar() const; // error: bar is final
};
成员函数的最终说明符

成员函数也可以通过最终说明符指定为不能被覆盖。

class Base {
public:
  virtual void foo() const;
  void baz() const final; // baz是最终的,不能被派生类覆盖
};

class Derived : public Base {
public:
  void foo() const override; // ok
  // void baz() const; // error: baz is final
};

最终说明符可以提高程序的可维护性和安全性,防止派生类修改重要的行为。