函数重载、函数覆盖以及函数隐藏

2023-10-27

数重载:是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或者两者都不相同),函数重载是发生在同一个类中。调用时,根据参数的不同进行调用。同时编译器在编译期间就确定了要调用的函数,或者说这是一种早期绑定。同时,函数重载与多态无关。

 

函数覆盖:有的书也称为函数重写(override)是指子类重新定义基类虚函数的方法

  构成函数覆盖的条件是:

 (1)基类的函数必须是虚函数(使用virtual关键字进行声明)

 (2)发生覆盖的两个函数要分别位于派生类和基类中。

 (3)函数名称与参数列表完全相同。

由于C++多态性是通过虚函数来实现的,所以函数覆盖总是和多态联系在一起的。并且是程序运行时才确定要调用的函数,这是动态绑定,或者称为后期绑定。

 

函数隐藏:是指子类中具有和父类(基类)同名的函数,但并不考虑参数列表是否相同,从而在子类中隐藏了父类的同名函数。

     函数隐藏有以下情况:

 (1)子类函数和父类函数完全相同(函数名和参数列表完全相同),只是基类的函数没有使用virtual关键字,此时基类的函数将被隐藏。

  (2)子类函数与父类函数名相同,但是参数列表不同,在这种情况下,无论父类的函数是否声明为virtual,父类的函数都将被隐藏。

举例如下:

上述程序就是一种典型的函数覆盖。

运行结果是:

fish bubble

 

当我们把父类的breathe函数前的virtual去掉,再次运行程序,发现结果为:fish bubble

但是此时是函数隐藏。

另外,当函数隐藏发生时,如果在子类的同名函数中想要调用基类的被隐藏函数,可以使用“基类名::函数名(参数)”的语法形式。

 现举例如下:

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

函数重载、函数覆盖以及函数隐藏 的相关文章

  • Nullable 是不可能的,为什么不呢? [复制]

    这个问题在这里已经有答案了 如果这是一个愚蠢的问题 请原谅 我正在尝试更好地理解 Net 中的 Nullable 类型 从我从 Microsoft 源代码 使用 ReSharper 中注意到的内容 我了解到 Nullable 是一个结构 而
  • 通过另一个列表更新列表(linq)

    我有类 Data 的对象列表 如下所示 class Data int code string name DateTime date update 我还有另一个课程列表 例如 class RefCodes int old code int n
  • 当其源是 https uri 时如何使 wpf MediaElement 播放

    在 wpf 独立应用程序 exe 中 我在主窗口中包含了 MediaElement
  • OpenGL缓冲区更新[重复]

    这个问题在这里已经有答案了 目前我正在编写一个模拟水的程序 以下是我所做的步骤 创建水面 平面 创建VAO 创建顶点缓冲区对象 在其中存储法线和顶点 将指针绑定到此 VBO 创建索引缓冲区对象 然后我使用 glDrawElements 渲染
  • 为什么在 C++ 中声明枚举时使用 typedef?

    我已经很多年没有写过任何 C 了 现在我正试图重新开始 然后我遇到了这个并考虑放弃 typedef enum TokenType blah1 0x00000000 blah2 0X01000000 blah3 0X02000000 Toke
  • 在 Mac OS X 上安装 libxml2 时出现问题

    我正在尝试在我的 Mac 操作系统 10 6 4 上安装 libxml2 我实际上正在尝试在 Python 中运行 Scrapy 脚本 这需要我安装 Twisted Zope 现在还需要安装 libxml2 我已经下载了最新版本 2 7 7
  • MSMQ接收和删除

    是否有任何选项可以在读取消息后将其从 MSMQ 中删除 比如 接收 删除可以作为原子操作运行吗 听起来您想查看下一条消息 然后在处理完成后接收它 Message message Queue Peek Queue ReceiveById me
  • DataGridView 列中的数字文本框

    我有一个DataGridView 我想要它的第一列或任何所需的列 其中有textboxes在其中 成为NUMERIC ONLY 我目前正在使用这段代码 private void dataGridViewItems EditingContro
  • 以下 PLINQ 代码没有改进

    我没有看到使用以下代码的处理速度有任何改进 IEnumerable
  • R 中使用 `UseMethod()` 与 `inherits()` 来确定对象的类

    如果我需要根据 R 对象的类以不同的方式处理它们 我可以使用if and else在单个函数内 foo lt function x if inherits x list Foo the list else if inherits x num
  • PrivateObject 找不到属性

    我的结构基本上如下所示 abstract class A protected string Identificator get set private void DoSomething DoSomethingSpecific protect
  • 判断串口是普通COM还是SPP

    我正在寻找一种方法来确定 COM 是标准 COM 还是 SPP COM 也称为 COM 设备的电缆替换蓝牙适配器 我有一个可以在 USB COM gt USB 和蓝牙下工作的设备 并且蓝牙接口可以与 SPP 一起工作 我目前正在使用Syst
  • “没有合适的默认构造函数可用”——为什么会调用默认构造函数?

    我已经查看了与此相关的其他一些问题 但我不明白为什么在我的情况下甚至应该调用默认构造函数 我可以只提供一个默认构造函数 但我想了解它为什么这样做以及它会产生什么影响 error C2512 CubeGeometry no appropria
  • 将 2 个字节转换为整数

    我收到一个 2 个字节的端口号 最低有效字节在前 我想将其转换为整数 以便我可以使用它 我做了这个 char buf 2 Where the received bytes are char port 2 port 0 buf 1 port
  • 在 C++ 代码 gdb 中回溯指针

    我在运行 C 应用程序时遇到段错误 在 gdb 中 它显示我的一个指针位置已损坏 但我在应用程序期间创建了 10 万个这样的对象指针 我怎样才能看到导致崩溃的一个 我可以在 bt 命令中执行任何操作来查看该指针的生命周期吗 谢谢 鲁奇 据我
  • 选择 asp.net CheckBoxList 中的所有项目

    ASP NET 和 C 我想要一个带有 全选 项目的复选框列表 当这个特定项目是 已选择 所有其他都将被选择 也 当选择被删除时 这个项目 也将来自所有人 其他物品 选中 取消选中 任何其他项目只会有一个 对特定项目的影响 无论选择状态如何
  • 如何测试某些代码在 C++ 中无法编译? [复制]

    这个问题在这里已经有答案了 可能的重复 单元测试编译时错误 https stackoverflow com questions 605915 unit test compile time error 我想知道是否可以编写一种单元测试来验证给
  • 不使用放置 new 返回的指针时的 C++ 严格别名

    这可能会导致未定义的行为吗 uint8 t storage 4 We assume storage is properly aligned here int32 t intPtr new void storage int32 t 4 I k
  • 如何知道 HTTP 请求标头值是否存在

    我确信这很简单 但是却让我感到厌烦 我在 Web 应用程序中使用了一个组件 它在 Web 请求期间通过添加标头 XYZComponent true 来标识自身 我遇到的问题是 如何在视图中检查此组件 以下内容不起作用 if Request
  • 是否可以使用 Dapper 流式传输大型 SQL Server 数据库结果集?

    我需要从数据库返回大约 500K 行 请不要问为什么 然后 我需要将这些结果保存为 XML 更紧急 并将该文件通过 ftp 传输到某个神奇的地方 我还需要转换结果集中的每一行 现在 这就是我正在做的事情 TOP 100结果 使用 Dappe

随机推荐

  • 组合预测模型

    组合预测模型 LSTM XGBoost长短期记忆神经网络结合极限梯度提升树时间序列预测 Matlab程序 目录 组合预测模型 LSTM XGBoost长短期记忆神经网络结合极限梯度提升树时间序列预测 Matlab程序 预测结果 评价指标 基
  • Oracle not in查不到应有的结果(NULL、IN、EXISTS详解)

    http x spirit iteye com blog 615603 首先我要感谢aa和Liu Xing帮我发现了我日志中的错误 之前比较粗心 把3条SQL语句写成一样的了 对于给读者造成的麻烦 我深表抱歉 今天我把原文做了修订 为了对得
  • vue中 Error in mounted hook: "TypeError: __WEBPACK_IMPORTED_MODULE_0__assets_swiper_js__.default is n...

    个人小站点 https sundjly github io 在vue的项目中出现了以下错误 Error in mounted hook TypeError WEBPACK IMPORTED MODULE 0 assets swiper js
  • **vue.esm.js?efeb:591 [Vue warn]: Invalid prop: type check failed for prop "data". Expected Array

    vue esm js efeb 591 Vue warn Invalid prop type check failed for prop data Expected Array got String 有可能是这几种情况
  • Centos7 使用yum命令安装软件失败,报错"Couldn't open file /media/cdrom/repodata/repomd.xml"

    今天使用CentOS7安装docker的时候 安装失败 报错 yum install docker 已加载插件 fastestmirror langpacks file media cdrom repodata repomd xml Err
  • day13 栈与队列

    LeetCode 239 力扣 维护一个单调队列 入队列时 保证单调递减 可以将小于待入队的数全部移除 出队列 如果不是队首出 最大元素 无需处理 package algor trainingcamp import java util De
  • i love you 浪漫字体复制_七夕

    七夕情人节来临之际 朋友圈早已被各种代购刷屏 你啥都不送 让你女朋友七夕的时候在朋友圈炫耀什么 扫一扫进七夕保命群 教你七夕买什么送女友才能保命 你男朋友是不是以为你缺氧 所以每个节日都送你空气 不得不承认他们一个个都是被代购事业耽误的网络
  • 偏微分方程 基础知识(线性偏微分方程+常系数线性偏微分方程)

    偏微分方程 指含有多元未知函数 u u x x
  • 互联网晚报

    今日看点 哪吒汽车第10万台量产车下线 仅用42个月 2022年首家银行理财子公司 浦银理财正式开业 京东成全国首批支持第三方商家接入数字人民币的企业 亚虹医药在科创板挂牌上市 A股迎来 泌尿生殖肿瘤第一股 刘慈欣 三体 英文版权以125万
  • 聚观早报

    聚观365 9月14日消息 iPhone 15系列正式发布 月饼专利申请超10000项 五个女博士 自建研究院 2023中国民营企业研发十强公布 华为和小米达成全球专利交叉许可协议 iPhone 15系列正式发布 2023年苹果秋季新品发布
  • 极光笔记

    作者 极光推送后台技术专家 曾振波 为什么要上云 关于企业上云 业内已经有了非常多的讨论和论述 这里主要是从极光自身的实际情况阐述几个理由 1 传统自建机房在扩充底层软硬件资源时 需要进行选型 采购 参数测试验证 实施部署等流程 整个过程需
  • 介绍Flex UI 测试工具:FlexMonkey

    相信许多人都知道Flex的单元测试工具 FlexUnit或者ASUnit 但是对于UI测试工具可能很少有人了解 那么目前有什么FlexUI测试工具呢 答案是FlexMonkey FlexMonkey是一个Flex应用的测试框架 他可以提供对
  • C++执行程序的过程

    C 执行程序的过程 C 的源程序是以 cpp作为后缀的 C语言则是 c cpp保存也可以兼容 为了使计算机能够执行高级语言的代码 必须对源程序做个处理 用编译器把源程序处理成计算机可以识别的二进制目标程序 一般目标程序的后缀为 obj 编译
  • 函数重载、函数覆盖以及函数隐藏

    函数重载 是指允许存在多个同名函数 而这些函数的参数表不同 或许参数个数不同 或许参数类型不同 或者两者都不相同 函数重载是发生在同一个类中 调用时 根据参数的不同进行调用 同时编译器在编译期间就确定了要调用的函数 或者说这是一种早期绑定
  • 技术、产业、人才三管齐下,数字人民币渐行渐近

    摘要 产业动态 Roxe与Fairexpay达成战略合作 拓展印度汇款业务 自治区级区块链 桂链 发布启动并全面接入 星火 链网 云南省区块链和数字科技标准化技术委员会获批成立 福建省高校首个产教融合区块链联合实验室揭牌 国网电商公司创新探
  • openwrt python_Openwrt python,openwrt上使用Python

    需要安装libffi python mini python libffi以及python mini需要安装在python之前 wget c http downloads openwrt org cn backfire 10 03 1 brc
  • VMware Workstation 不可恢复错误: (vmx)

    errors VMware Workstation 不可恢复错误 vmx Exception 0xc0000006 disk error while paging has occurred 日志文件位于 K vmware centos vm
  • 多功能翻译工具:全球翻译、润色和摘要生成

    openai translator openai translator Stars 18 1k License AGPL 3 0 这个项目是一个多功能翻译工具 由 OpenAI 提供支持 可以进行全球单词翻译 单词润色和摘要生成等操作 提供
  • 微信网页开发调用微信jssdk接口遇到的坑以及最终解决方法 (持续更新)

    1 微信网页开发调用jssdk时报permission denied 大致是两个原因 1 首先注册时未将你所调用的接口名字添加至jsApiList 2 第二个就是你的这个公众号没有权限使用这个api 例如在开发环境中的微信页面就无法调取这个
  • 数据隐私、AI 交互和知识管理:DB-GPT 的综合解决方案

    python telegram bot python telegram bot Stars 22 9k License GPL 3 0 这个项目是一个提供纯 Python 异步接口的 Telegram Bot API 库 它与 Python