📅  最后修改于: 2023-12-03 14:59:52.034000             🧑  作者: Mango
在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
};
最终说明符可以提高程序的可维护性和安全性,防止派生类修改重要的行为。