C++ final关键字

2023-10-29

1.禁用继承

C++11中允许将类标记为final,方法时直接在类名称后面使用关键字final,如此,意味着继承该类会导致编译错误。

实例如下:

class Super final
{
  //......
};

2.禁用重写

C++中还允许将方法标记为fianal,这意味着无法再子类中重写该方法。这时final关键字至于方法参数列表后面,如下

class Super
{
  public:
    Supe();
    virtual void SomeMethod() final;
};

3.final函数和类

C++11的关键字final有两个用途。第一,它阻止了从类继承;第二,阻止一个虚函数的重载。我们先来看看final类吧。

程序员常常在没有意识到风险的情况下坚持从std::vector派生。在C++11中,无子类类型将被声明为如下所示:

class TaskManager {/*..*/} final; 
class PrioritizedTaskManager: public TaskManager {
};  //compilation error: base class TaskManager is final

同样,你可以通过声明它为final来禁止一个虚函数被进一步重载。如果一个派生类试图重载一个final函数,编译器就会报错:

class A
{
pulic:
  virtual void func() const;
};
class  B: A
{
pulic:
  void func() const override final; //OK
};
class C: B
{
pulic:
 void func()const; //error, B::func is final
};

C::func()是否声明为override没关系,一旦一个虚函数被声明为final,派生类不能再重载它。

参考资料

https://blog.csdn.net/u012333003/article/details/28696521
https://www.cnblogs.com/minggong/p/6457726.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ final关键字 的相关文章

随机推荐

  • 数据库SQLite在Qt5+VS2012使用规则总结---中文乱码

    VS2012默认格式为 GB2312 80 而有时我们用到字符串需要显示中文时 就会出现乱码 下面仅就Qt5和VS2012中使用数据库SQLite时 做一个简单的备忘录 1 include
  • Android Studio格式化代码设置和代码风格设置、代码提示键

    自从google大力推出android studio开发android IDE工具之后 最近大家都切换到android studio 但是切换过来之后 各种不顺手 快捷键就是一个大问题 本来在eclipse中用的好好的快捷键 愣是不顺手了
  • Telink BLE MESH开发环境搭建(Windows版本)

    windows系统环境搭建 获取Telink IDE 下载Telink IDE 安装Telink IDE 解压软件包 用管理员权限运行TelinkSDKv1 3 1 exe 如上图安装到C盘 不可安装到其他盘 会报错 打开运行Eclipse
  • 【带你了解C++标准库为何在八大链表结构中选择了它】双向循环带头链表的实质性操作

    文章目录 八大链表结构为何选择了它 初始化和打印 尾插和尾删 头插和头删 查找和插入 删除和销毁 小结 链表功能动画演示 逻辑实现text c 头文件List h 函数实现List c 八大链表结构为何选择了它 C 的STL库选择的最终链表
  • AE已支持M1芯片mac安装(After Effects 20直装版M1安装方法)M1芯片处理器安装AE问题教程

    作为一名视频编辑创作者 一直都是用苹果的Mac电脑运行AE制作影片 就在今年11月份 苹果发布了基于Apple Silicon M1 SoC芯片打造新Mac产品 全新的M1处理器的诞生带来了很多革命性的变化 因为这标志着苹果正式开启了从In
  • Kaptcha实现验证码

    文章目录 依赖 配置类 使用 依赖
  • 华为OD机试 - MELON的难题 - 动态规划(Java 2023 B卷 100分)

    目录 一 题目描述 二 输入描述 三 输出描述 四 动态规划 五 解题思路 六 Java算法源码 七 效果展示 1 输入 2 输出 3 说明 华为OD机试 2023B卷题库疯狂收录中 刷题点这里 一 题目描述 MELON有一堆精美的雨花石
  • van-field输入数字失焦后强制保留两位小数

    van field输入数字失焦后强制保留两位小数 一 html 二 JS部分 1 watch监听 2 强制控制有两位小数 一 html
  • 设计模式浅析-适配器模式

    前言 2017年悄悄的来了 无声无息的以至于我都还没好好缅怀一下荒诞的2016 不得不说 2016没能通过努力达到应该有的程度 看样子目标还是要有的 那就先设定一个小目标吧 设计模式 当你学会了设计模式 就要忘记设计模式 辉哥 适配器模式
  • 华为手机隐藏指令的5个代码

    第一个 拨号键输入 6130 这个指令主要用于查看手机当前的网络信号 手机基本信息以及手机的使用情况数据的统计 尤其是手机使用情况统计数据 可以查看当前手机上次使用了哪些应用 使用的具体时间以及使用的时长 第二个 拨号键输入 2846579
  • MySQL 数据库存储引擎

    目录 一 存储引擎简介 二 MyISAM存储引擎 1 MylSAM介绍 2 MyISAM表支持3种不同的存储格式 3 MylSAM的特点 4 MyISAM使用的生产场景 三 InnoDB存储引擎 1 InnoDB介绍 2 InnoDB的特点
  • ubuntu18.04下pass-through直通realteck PCI设备到qemu-kvm虚拟机实践

    设备直通是一种虚拟化资源分配方式 通过将物理设备直通给虚拟机环境 达到虚拟机可以直接访问物理设备的目的 直通功能对设备的要求不高 不需要设备支持PF VF 目前市面上的显卡 网卡一般都支持直通 典型场景比如有两块显卡 一块主机用 另一块虚拟
  • 前端如何实现浏览器适配?

    1 根据window screen width获取当前浏览器的宽度 然后根据宽度加载不同的样式文件 注意 这里的script一定要写在head标签里面 这样在加载页面的之前 会先把css文件加载出来 2 媒体查询 根据设备显示器的特性为其设
  • python 根据索引取值_Python 从列表中取值和取索引的方法

    如下所示 name list zhangsan lisi wangwu 1 取值 print name list 0 print name list 1 print name list 2 2 取索引 print name list ind
  • 北京市经济和信息化局:鼓励布局区块链算力中心

    近日 北京市经济和信息化局印发 北京市数据中心统筹发展实施方案 2021 2023年 的通知 方案提出 鼓励布局人工智能 区块链算力中心 推动形成 4000PFlops 即每秒 4 百亿亿次浮点运算 总算力规模的人工智能公共算力基础设施 重
  • GEN 自动生成 GORM 模型结构体文件及使用示例

    GEN 自动生成 GORM 模型结构体文件及使用示例 背景 GEN 是一个基于 GORM 的安全 ORM 框架 由字节跳动无恒实验室与 GORM 作者联合研发 主要功能说白了就是帮助生成数据表对应的模型文件和更安全方便地执行SQL 直接使用
  • 短链服务架构实践

    1 存储采用REDIS做数据存储 2 id keyword gt long url hset key long url id keyword long url 3 md5 long url gt id keyword hset key sh
  • 队列的实际应用和操作(顺序表)

    题目 利用队列求解报数问题 设有n个人站成一排 从左向右的编号分别为1 n 现在从左往右报数 1 2 1 2 数到 1 的人出列 数到 2 的立即站到队伍的最右端 报数过程反复进行 直到n个人都出列为止 要求给出他们的出列顺序 头文件SqQ
  • 内附源码!使用Python和requests库轻松爬取全国高校排名

    目录 前言 代码实现 总结 前言 中国的大学排名数据比较分散 一些权威机构会发布综合排名 如教育部的 双一流 985 211 计划 还有一些机构会发布专业排名等 因此 具体爬取哪些排名数据可能需要根据实际需要来进行筛选 代码实现 导入req
  • C++ final关键字

    1 禁用继承 C 11中允许将类标记为final 方法时直接在类名称后面使用关键字final 如此 意味着继承该类会导致编译错误 实例如下 class Super final 2 禁用重写 C 中还允许将方法标记为fianal 这意味着无法