首页 > 后端开发 > C++ > 正文

c++中的final关键字有哪两种用法_c++禁止继承与重写

尼克
发布: 2025-12-15 16:33:07
原创
756人浏览过
final关键字用于防止类被继承和虚函数被重写:1. 类后加final则无法派生子类;2. 虚函数声明末尾加final则禁止在派生类中重写,增强设计安全与稳定性。

c++中的final关键字有哪两种用法_c++禁止继承与重写

在C++中,final关键字有两种主要用途:一是防止类被继承,二是阻止虚函数被重写。这两个功能有助于设计更安全、更可控的类体系结构。

1. 防止类被继承(禁止派生)

当在类定义后使用 final 时,该类不能被其他类继承。任何尝试从该类派生新类的操作都会导致编译错误

例如:

class Base final {
    // 类成员
};

// 下面这行代码会编译失败
class Derived : public Base {  // 错误:Base 是 final 的,不能被继承
};
登录后复制
这种用法适用于那些设计为不再扩展的类,比如工具类或已完成实现的特定功能类,确保其行为不会因派生而被意外改变。

2. 阻止虚函数被重写(禁止覆写)

final 用于虚函数声明时,表示该函数在派生类中不能再被重写。这仅适用于虚函数,且必须出现在函数声明的末尾。

示例:

ChatCut
ChatCut

AI视频剪辑工具

ChatCut 1086
查看详情 ChatCut
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++禁止继承与重写的详细内容,更多请关注php中文网其它相关文章!

c++速学教程(入门到精通)
c++速学教程(入门到精通)

c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号