在 C++ 中,如果你不希望让你的函数在继承的子类中被重写(覆盖),可以使用
final
关键字。final
关键字用于修饰类中的虚函数,表示该函数不可被子类重写。使用
final
关键字的方法如下:class Base { public: virtual void foo() final { // 函数体 } }; class Derived : public Base { public: // 尝试重写 foo() 将导致编译错误 // void foo() override { // // 子类中不能重写 foo() 函数 // } };
在上面的例子中,
Base
类中的 foo()
函数被声明为 final
,这意味着在任何派生类中都不能再对 foo()
进行重写。如果在 Derived
类中尝试重写 foo()
,编译器将会产生错误,阻止你对该函数进行重写。需要注意的是,
final
关键字只能用于虚函数,用于非虚函数是没有意义的。同时,如果你不希望一个类被继承,可以将该类声明为 final
,这样其他类就不能继承它。class FinalClass final { // 类的成员和函数 };
以上代码中,
FinalClass
类被声明为 final
,意味着它不能被其他类继承。如果有其他类尝试继承 FinalClass
,编译器将会报错。总结:
- 使用
final
关键字修饰虚函数,表示该函数不能被子类重写。
- 使用
final
关键字修饰类,表示该类不能被其他类继承。