当前位置: 首页 > news >正文

没有与参数列表匹配的重载函数_C++覆盖和重载的区别

8ced01fc7184b39739c659ba519d5d08.png

1、覆盖

覆盖也称为重写(override)。

覆盖是存在类中,子类重写从基类继承过来的函数,函数名、返回值、参数列表都必须和基类相同

当子类的对象调用成员函数的时候,如果成员函数有被覆盖则调用子类中覆盖的版本,否则调用从基类继承过来的函数。

如果子类覆盖的是基类的虚函数,则可以用来实现多态。当子类重新定义基类的虚函数之后,基类指针可以根据赋给它不同子类指针动态的调用子类中的虚函数,做到动态绑定,这就是多态。

析构函数通常声明为虚函数,参见:

C++基类的析构函数为何要声明为虚函数

2、重载

重载指允许在相同作用域中存在多个同名的函数,这些函数的参数表不同,编译器根据函数不同的形参表对同名函数的名称做修饰,然后这些同名函数就成了不同的函数。如:

void Fun(int a);void Fun(double a);void Fun(int a, int b);void Fun(double a, int b);

重载要求参数列表必须不同,比如参数类型不同、参数个数不同、参数顺序不同。如果仅仅是函数的返回值不同是没办法重载的。如:

int Fun(int a)void Fun(int a)

函数被C++编译后在符号库中的名字与C语言的不同。假设某个函数的原型为:

void foo( int x, int y);

该函数被C编译器编译后在符号库中的名字为_foo;而C++编译器则会产生像_foo_int_int之类的名字。

这样的名字包含了函数名、函数参数数量及类型信息,C++就是靠这种机制来实现函数重载的。

3、重载与覆盖的区别

  • 重载要求函数名相同,但是参数列表必须不同;覆盖要求函数名、参数列表、返回值必须相同。
  • 重载描述的是同一个类中不同成员函数之间的关系;覆盖是子类和基类之间不同成员函数之间的关系。
  • 重载的确定是在编译时确定,是静态的;虚函数则是在运行时动态确定。

相关文章:

  • python嵌入式系统开发_python能开发单片机吗
  • python根据excel生成报表_python提取Excel中的特定列生成新的表格
  • python显示数据长度_python 读取数据再写入,文件大小总会出现变差?
  • datagrid如何获取一行数据中的某个字段值_UI测试中,我们应该注意哪些?
  • python常考题_python 一个批量出考题,生成不同考卷的小例题
  • python简历项目经验在哪里找_Linux运维工程师简历项目经验
  • matlab函数编写_实验二 | M函数与M文件的编写与应用
  • docker 部署_docker自动化部署前端项目实战
  • 如何将网站前端如何添加登录密码访问_如何将自己的网站上线到服务器端详解!...
  • python根据时间序列画折线图_如何根据时间序列金融数据画出分年对比的季节性图表...
  • tkinter.filedialog如何一次性选择多个文件_多个文档怎样一键重命名?用这款工具只需七步即可实现...
  • python同一层次的代码、缩进可以不一致_Python3缩进对逻辑的影响
  • js修改style样式_Vue之 绑定样式
  • 第二次打开不是最大_前《足球周刊》主编卢劲:法国队何能缔造半世纪以来最大决赛比分?...
  • python运行闪退_解决Opencv+Python cv2.imshow闪退问题
  • Google 是如何开发 Web 框架的
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • Android Volley源码解析
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • EOS是什么
  • JavaScript类型识别
  • JAVA并发编程--1.基础概念
  • Java超时控制的实现
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • mysql 5.6 原生Online DDL解析
  • PhantomJS 安装
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • SQLServer之创建显式事务
  • Twitter赢在开放,三年创造奇迹
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 动态规划入门(以爬楼梯为例)
  • 前端js -- this指向总结。
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 小程序测试方案初探
  • 终端用户监控:真实用户监控还是模拟监控?
  • 自动记录MySQL慢查询快照脚本
  • MPAndroidChart 教程:Y轴 YAxis
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • # C++之functional库用法整理
  • #大学#套接字
  • (6)添加vue-cookie
  • (C语言)fgets与fputs函数详解
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (NSDate) 时间 (time )比较
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (过滤器)Filter和(监听器)listener
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (十一)手动添加用户和文件的特殊权限
  • (一)认识微服务
  • (转)母版页和相对路径
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息