final关键字用于防止类被继承和虚函数被重写:1. 类后加final则无法派生子类;2. 虚函数声明末尾加final则禁止在派生类中重写,增强设计安全与稳定性。

在C++中,final关键字有两种主要用途:一是防止类被继承,二是阻止虚函数被重写。这两个功能有助于设计更安全、更可控的类体系结构。
1. 防止类被继承(禁止派生)
当在类定义后使用 final 时,该类不能被其他类继承。任何尝试从该类派生新类的操作都会导致编译错误。
例如:
class Base final { // 类成员};// 下面这行代码会编译失败class Derived : public Base { // 错误:Base 是 final 的,不能被继承};
这种用法适用于那些设计为不再扩展的类,比如工具类或已完成实现的特定功能类,确保其行为不会因派生而被意外改变。
2. 阻止虚函数被重写(禁止覆写)
将 final 用于虚函数声明时,表示该函数在派生类中不能再被重写。这仅适用于虚函数,且必须出现在函数声明的末尾。
示例:
class Base {public: virtual void func() final { // 实现 }};class Derived : public Base {public: void func() override { // 错误:func 在 Base 中被标记为 final,不能重写 }};
也可以在中间层级中标记 final,允许部分继承链存在,但终止进一步重写:
class A {public: virtual void foo() {}};class B : public A {public: virtual void foo() final {} // 在 B 中禁止继续重写};class C : public B {public: void foo() override {} // 错误:B::foo 是 final 的};
基本上就这些。使用 final 能增强程序的设计意图表达,提升封装性和稳定性,尤其在大型项目或接口稳定场景中非常有用。虽然它限制了灵活性,但换来的是更可预测的行为。不复杂但容易忽略。
以上就是c++++中的final关键字有哪两种用法_c++禁止继承与重写的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1489193.html
微信扫一扫
支付宝扫一扫