C++11新特性探究:显式override和final

2023-11-01

C++中,我们一般可以以基类声明纯虚函数,然后让派生类继承并重写这个虚函数,用​override表示显示覆盖基类方法,但一直没有提供一种方法来阻止派生类继承基类的虚函数。

C++11标准引入了final说明符,很好的解决了上面的问题。final告诉编译器,该虚函数不能被派生类重写。

废话不多说,上代码,试着指出来下面的代码有哪些问题?

class Base
{
public:
  virtual void plant(int x) {}
};

class Derived : public Base
{
public:
  void plant(int x) final {}
};

class SunDerived final : public Derived
{
public:
  void plant(int x) {}
};

class GrandSunDev : public SunDerived
{
};

​上述代码中,基类Derived的虚函数 plant 声明为final,那么,派生类SunDerived重写 plant 函数的时候,编译器会报错。​

final说明符不止可以声明虚函数,还可以声明类,如果在类定义的时候,声明了final,那么,这个类将不能作为基类被其他类继承,SunDerived被声明为final,那么GrandSunDev再继承SunDerived的时候,编译器会报错。​

注意:C++11标准中,无论是override还是final,都没有背作为保留的关键字,override只有在虚函数尾部才有意义,final只有在虚函数尾部以及类声明的时候,才有意义。

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

C++11新特性探究:显式override和final 的相关文章

  • 使用 gcc 在 Linux 上运行线程构建块 (Intel TBB)

    我正在尝试为线程构建块构建一些测试 不幸的是 我无法配置 tbb 库 链接器找不到库 tbb 我尝试在 bin 目录中运行脚本 但这没有帮助 我什至尝试将库文件移动到 usr local lib 但这又失败了 任何的意见都将会有帮助 确定您
  • 在模板类中声明模板友元类时出现编译器错误

    我一直在尝试实现我自己的链表类以用于教学目的 我在迭代器声明中指定了 List 类作为友元 但它似乎无法编译 这些是我使用过的 3 个类的接口 Node h define null Node
  • 调用 McAfee 病毒扫描引擎

    我收到客户的请求 要求使用他们服务器上的 McAfee 病毒扫描将病毒扫描集成到应用程序中 我做了一些调查 发现 McScan32 dll 是主要的扫描引擎 它导出各种看起来有用的函数 我还发现提到了 McAfee Scan Engine
  • 在 xaml 中编写嵌套类型时出现设计时错误

    我创建了一个用户控件 它接受枚举类型并将该枚举的值分配给该用户控件中的 ComboBox 控件 很简单 我在数据模板中使用此用户控件 当出现嵌套类型时 问题就来了 我使用这个符号来指定 EnumType x Type myNamespace
  • 为什么 GCC 不允许我创建“内联静态 std::stringstream”?

    我将直接前往 MCVE include
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • x:将 ViewModel 方法绑定到 DataTemplate 内的事件

    我基本上问同样的问题这个人 https stackoverflow com questions 10752448 binding to viewmodels property from a template 但在较新的背景下x Bind V
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 有没有办法让 doxygen 自动处理未记录的 C 代码?

    通常它会忽略未记录的 C 文件 但我想测试 Callgraph 功能 例如 您知道在不更改 C 文件的情况下解决此问题的方法吗 设置变量EXTRACT ALL YES在你的 Doxyfile 中
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • C++ 中的参考文献

    我偶尔会在 StackOverflow 上看到代码 询问一些涉及函数的重载歧义 例如 void foo int param 我的问题是 为什么会出现这种情况 或者更确切地说 你什么时候会有 对参考的参考 这与普通的旧参考有何不同 我从未在现
  • 在OpenGL中,我可以在坐标(5, 5)处精确地绘制一个像素吗?

    我所说的 5 5 正是指第五行第五列 我发现使用屏幕坐标来绘制东西非常困难 OpenGL 中的所有坐标都是相对的 通常范围从 1 0 到 1 0 为什么阻止程序员使用屏幕坐标 窗口坐标如此严重 最简单的方法可能是通过以下方式设置投影以匹配渲
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置

随机推荐

  • 用Python实现队列(queue)

    一 队列的定义 队列 一种先进先出 FIFO First in First Out 的线性结构 即在队列的尾部入队 在队列的头部出队 入队 即队列添加成员 在队列的尾部完成 出队 即队列删除成员 在队列的头部完成 在创建队列时 一般以数组为
  • 登陆界面的测试

    一 功能 1 用户名和密码 用户名和密码的合法性 长度 字符 空 用户名和密码的一致性 验证码的合法性和一致性 2 登陆功能 跳转正确 3 页面其他链接 如忘记密码 4 记住用户名 记住密码的功能 5 输入框是否支持复制和粘贴 6 密码显示
  • 图像分割:Python的SLIC超像素分割

    图像分割 Python的SLIC超像素分割 1 什么是超像素 2 为什么超像素在计算机视觉方面有重要的作用 3 简单线性迭代聚类 SLIC 4 效果图 5 源码 参考 1 什么是超像素 在单个或多个通道中 图像表示为像素网格 我们采用这些M
  • mysql8 java Could not create connection to database server. Attempted reconnect 3 times问题

    最近照着网上的一个博主的例子 学习ssm 结果一个mysql8 搞得我都崩溃了 各种连不上 总结一下出错原因 1 maven中的jdbc连接jar包 版本也要换成高版本
  • Linux基本权限(详解)

    目录 文件权限位 更改文件权限 chmod指令 chown指令 chgrp指令 数字权限 umask命令 文件权限位 显示当前目录下文件的详细信息 ls l 也可以写成 ll Linux下文件的权限位共有十个 按照1333来划分 第一位代表
  • 服务器操作系统比较,服务器操作系统比较

    服务器操作系统比较 内容精选 换一换 Atlas 800 训练服务器 型号 9000 安装上架 服务器基础参数配置 安装操作系统等操作请参见 Atlas 800 训练服务器 用户指南 型号9000 风冷 或 Atlas 800 训练服务器
  • 特征筛选3——卡方检验筛选特征(单变量筛选)

    sklearn文档 https scikit learn org stable modules generated sklearn feature selection chi2 html 卡方检验只适用分类任务 用来检验特征与y是否相互独立
  • java获取response与request

    java获取response与request 方式一 监听 web xml
  • Makefile 多个目标匹配的问题

    在windows下直接使用mingw32 make ZTHREAD A the static link library file of ZThread ZTHREAD A F ZJ tools cpp libs ZThread 2 3 2
  • Flutter 文字渐变色

    目前在做的项目需要用到渐变文字的需求 但是都用图的话 会导致包很大 所以打算自己去写一个渐变 本次渐变用到的组件是ShaderMask这个组件来完成咱们的文字渐变色 代码实现 text里面的文字需要设置为白色字体 ShaderMask sh
  • [ 云计算 华为云 ] 解决办法:如何更换华为云云耀云服务器L实例的镜像

    文章目录 问题描述 分析原因 解决办法 文末送书 ANSYS Workbench项目分析与案例实操详解 博主推荐理由 本书内容简介 本书作者简介 废话在前 直接看解决办法的这段可以过 讲道理 一般情况下云服务器 镜像是随便更换的 但是我发现
  • 华为OD机试 - 查找众数及中位数(Java)

    题目描述 众数是指一组数据中出现次数量多的那个数 众数可以是多个 中位数是指把一组数据从小到大排列 最中间的那个数 如果这组数据的个数是奇数 那最中间那个就是中位数 如果这组数据的个数为偶数 那就把中间的两个数之和除以2 所得的结果就是中位
  • count(*)和group by的用法

    https www cnblogs com gongchengshiwhl p 7994761 html https blog csdn net weixin 44938368 article details 109614917 1 cou
  • 将设计稿图标制作成iconfont(ps cs6 + ai cs6)

    项目开发中需要用到icon iconfont网站上找的icon风格各式各样 就想着把设计稿的图标直接转成icon就好了 1 先在ps装一个脚本 save ps to svg1 0 jsx 放在ps安装目录下的 Presets Scripts
  • python Opencv和pyautogui实现自动识图点击

    python Opencv和pyautogui实现自动识图点击 1 导入python及其他模块 匹配类是上一章博客内容 pyautogui自带的图片匹配效果不是很理想 就使用Opencv的图片匹配来实现图片的定位 python 使用模版匹配
  • Vue.js 学习笔记十三:Vue Router 之导航守卫

    目录 导航守卫 全局前置守卫 全局后置钩子 路由独享的守卫 组件内的守卫 导航守卫 我们来考虑一个需求 在一个 SPA 应用中 如何改变网页的标题呢 网页标题是通过
  • linux安装php7的方法

    1 安装依赖包 1 安装依赖包 1 yum install y gcc gcc c make zlib zlib devel pcre pcre devel libjpeg libjpeg devel libpng libpng devel
  • linux中的USB摄像头驱动(应用层)(基于V4L2)

    V4L2 是 Video4Linux2 的缩写 是 Linux 内核中的一个视频设备驱动接口 USB V4L2 初始化流程 1 打开设备节点 open 2 配置参数 分辨率 fps 格式 ioctl 3 请求分配帧缓存 gt 地址映射 4
  • Remember The Word-Trie

    题目 UVaLive 3942 include
  • C++11新特性探究:显式override和final

    C 中 我们一般可以以基类声明纯虚函数 然后让派生类继承并重写这个虚函数 用 override表示显示覆盖基类方法 但一直没有提供一种方法来阻止派生类继承基类的虚函数 C 11标准引入了final说明符 很好的解决了上面的问题 final告