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

2023-10-26

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

 

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

  构成函数覆盖的条件是:

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

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

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

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

 

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

     函数隐藏有以下情况:

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

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

举例如下:

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

运行结果是:

fish bubble

 

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

但是此时是函数隐藏。

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

 现举例如下:

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

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

随机推荐

  • MMClassification(一)

    1 介绍 一句话总结 基于pytorch的强大模块化组件式的分类框架 相关资料 中文文档 GitHub 课程学习 深入学习直接使用官方文档学习效果最好 本文记录学习过程知识以便快速回顾和查找 其中包含个人的学习总结 仅做参考 2 项目结构
  • 刷脸支付还可以带来新的互动体验和应用

    支付宝领先的微信支付是依附于电商的绝对优势 微信支付凭借其10亿用户的优势 正在与支付宝抗衡 近几年来 移动支付的快速发展带动了支付技术的变革 nfc支付 二维码支付 指纹支付等支付方式活跃在我们的日常生活中 随着人脸识别技术的成熟和人们对
  • 三菱FX3U——ST编程红绿灯

    一个循环周期是32秒 南北向绿灯和东西向红灯亮10秒后 两侧黄灯亮3秒 黄灯在闪烁3秒 南北向红灯和东西向绿灯亮10秒 两侧黄灯亮3秒 黄灯在闪烁3秒 添加启动和停止 按下启动按钮 使定时器复位 通过置位M0 让标签的状态赋值给输出点 通过
  • DataGrip的简单使用笔记

    目录 导入数据 关键字导航 全局搜索 结果集搜索 导航到关联数据 结果集数据过滤 行转列 变量重命名 自动检测无法解析的对象 权限定字段名 通配符自动展开 大写自动转换 sql格式化 多光标模式 代码注释 列编辑 https pan bai
  • rk3399 高可靠OTA升级

    https blog csdn net m0 37631324 article details 106254910
  • auto_deleter 使用,定义自动销毁对象

    template
  • Windows中安装ElasticSearch(单机+集群+Kibana)

    系统版本 Windows 10 ElasticSearch版本 7 15 2 https artifacts elastic co downloads elasticsearch elasticsearch 7 15 2 windows x
  • linux 网卡驱动升级,安装或更新CentOS平台的网卡驱动程序

    基于Linux平台安装或更新网卡驱动程序与Windows平台相差不大 首先查阅出主机网卡的具体型号 Windows平台可以借助鲁大师等硬件检测工具查看网卡 Linux平台有适用的命令lspci ethtool查看 在CentOS6 7平台下
  • 【欧拉openEuler 】 ssh安装、配置和远程控制

    1 查看SSH是否安装 一般是默认安装好了的 changairjb localhost rpm qa grep ssh libssh 0 9 5 1 oe1 aarch64 openssh 8 2p1 13 oe1 aarch64 open
  • 01-初识HTML

    01 初识HTML 学习目标 理解HTML的基本语法 掌握排版标签实现标题等效果 相对路径和绝对路径 媒体标签 图片 音频 视频 超链接 一 基础认知 了解网页组成和五大浏览器 明确Web标准的构成 1 1 认识网页 以下网页有哪些部分组成
  • (C语言)16进制转10进制

    include
  • Java反射机制与Method的invoke方法实现

    一 什么是反射 1 Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息 从而操作类或对象的属性和方法 本质是JVM得到class对象之后 再通过class对象进行反编译 从而获取对象的各种信息 2 Java属于先编译再运行的语
  • 机械革命黑苹果改造计划第四番-外接显示器、win时间不正确问题解决

    问题 1 无法外接显示器 最大的问题就是目前无法外接显示器 因为机械革命大多数型号笔记本电脑的HDMI DP接口都是直接物理接在独显上的 内屏用核显外接显示器接独显 英伟达独显也是黑苹果无法驱动的 而且发现机械革命tpyec接口还减配了没有
  • CSA作业

    1 修改当前主机名为rhcsa 设置当前时区为Asia Shanghai 2 在 home和 root目录下面创建file1文件和dir1目录 3 在 home file1文件里面写入内容hello welcome to home 4 在
  • Python中进程和线程详解与四款Python程序库

    Num01 gt 线程 线程是操作系统中能够进行运算调度的最小单位 它被包含在进程之中 是进程中的实际运作单位 一个线程指的是进程中一个单一顺序的控制流 一个进程中可以并发多条线程 每条线程并行执行不同的任务 Num02 gt 进程 进程就
  • Qt报错: error: C2001: 常量中有换行符,解决QT运行时有中文乱码

    Qt系列文章目录 文章目录 Qt系列文章目录 前言 一 问题原因 二 解决办法 1 第一种方法 改变文件的编码格式 2 第二种方法 修改代码 总结 前言 在编译别人的Qt工程中 总会遇到莫名其妙的问题 在别人机器上运行好好的工程 拷贝到自己
  • BAPI_ACC_DOCUMENT_POST 税码未在任何总分类账目中出现

    BAPI ACC DOCUMENT POST 报错 税码未在任何总分类账目中出现 原因 BAPI不支持auto tax caculate 单独录入税分录 需要设置一下direct tax
  • [leetcode 周赛 149] 1156 单字符重复子串的最大长度

    目录 1156 Swap For Longest Repeated Character Substring 单字符重复子串的最大长度 描述 思路 代码实现 1156 Swap For Longest Repeated Character S
  • Ajax请求后防止自动刷新方法

    Ajax请求后会刷新页面 启用延时函数在刷新后进行jq操作 刷新时间在5 10ms内 在经过这段时间后再进行jq操作
  • 函数重载、函数覆盖以及函数隐藏

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