一、C++中的函数重载:
1、函数重载的概念:
用同一个函数名定义不同的函数
当函数名和不同的参数搭配时函数的含义不同
注意:在c语言中是没有函数重载这个概念的。
代码示例演示:
上面在c++编译器里面编译时没有问题的,如果放在c语言编译器里面编译是会报错的:
所以说c语言里面不支持函数重载。
2、函数重载至少要满足下面的一个条件:
参数个数不同
参数类型不同
参数顺序不同
比如下面两个函数可以构造重载函数吗?
答案肯定是可以构造重载函数的,读者可以自己试试(这个比较好理解)。
3、当函数默认参数遇上函数重载会发生什么?
例如下面的两个函数:
到底会发生啥,我们还是看下面这个实验:
运行结果:
从上面报错的结果里面有一个单词ambiguous(意思是梦棱两可的),也就是说默认参数这种使用时不允许的。
4、C++编译器调用重载函数的准则:
将所有同名函数作为候选者
尝试寻找可行的候选函数:
精确匹配实参
通过默认参数能够匹配实参
通过默认类型转换匹配实参
匹配失败:
最终寻找到的候选函数不唯一,则出现二义性,编译失败
无法匹配所有候选者,函数未定义编译失败
5、函数重载的注意事项:
重载函数在本质上是相互独立的不同函数
重载函数的函数类型不同
函数返回值不能作为函数重载的依据
函数重载是由函数名和参数列表决定的
代码测试:
运行结果:
从输出结果我们可以看出这两个函数的入口地址不一样,这表明这两个函数是不同的函数。
6、小结:
函数重载是c++中引入的概念
函数重载的本质是相互独立的不同函数
c++中通过函数名和函数参数确定函数调用
审核编辑:符乾江
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
相关推荐
使用C++进行运动控制卡的周期上报功能实现
发表于 12-17 13:59
•167次阅读
,即使没有数据返回,也得写 void。 第二个函数名。 C语言的函数名绝对不能重名,除了用上 weak 这样的黑科技。同一个项目中,函数重名就会提示重复定义。
发表于 11-29 10:25
•278次阅读
简单的总结一下 C++ 新手容易犯的一些编程错误,给新人们提供一个参考。 1 有些关键字在 cpp 文件中多写了 对于 C++ 类,一些关键字只要写在 .h 中就好,cpp 中就不用再加上了,比如
发表于 11-15 12:42
•316次阅读
同样是结构体,看看在C语言和C++中有什么区别?
发表于 10-30 15:11
•199次阅读
电子发烧友网站提供《C7000优化C/C++编译器.pdf》资料免费下载
发表于 10-30 09:45
•0次下载
电子发烧友网站提供《C++语言基础知识.pdf》资料免费下载
发表于 07-19 10:58
•7次下载
C++有多态与继承,但是很多人开始学习C++,有时候会面临一个常见问题,就是如何向下转型,特别是不知道具体类型的时候,这个时候就希望C++ 可以向Java或者Python中有insta
发表于 07-18 10:16
•575次阅读
我使用的是 FX2 CY7C68013A 芯片。 我知道 CyUSB.NET 库中有我需要的 LoadEEPROM 函数。 请问如何在 C++ 环境而不是 C#/CLR 环境中使用该
发表于 05-31 06:59
用arm-xxx-gcc编译器进行编译,*.cpp文件会使用arm-xxx-g++编译器进行编译,STM32CubeMX生成文件都是*.c源文件,在不修改文件名后缀情况下,我现在是想在*.c源文件中使用c++特性(比如
发表于 04-25 06:15
使用DevEco Studio创建一个Native C++应用。应用采用Native C++模板,实现使用NAPI调用C标准库的功能。使用C标准库hypot接口计算两个给定数平方和的平
发表于 04-14 11:43
•2596次阅读
在前两篇博客中,我们 向您介绍了新的 MISRA C++ 标准 和 C++ 的历史 。在这篇博客中,我们将仔细研究以 C++ 中 for 循环为中心的特定规则。
发表于 03-28 13:53
•787次阅读
操作系统、嵌入式系统等对性能要求较高的场景。C语言的语法相对简单,学习曲线较平缓,也是学习其他高级语言的入门语言。 C++: C++是在
发表于 02-05 14:11
•2370次阅读
Microsoft开发的一种面向对象的事件驱动编程语言。它的设计目标是简化编程过程,让初学者也能快速上手。与之相比,C++语言是一种通用的、面向对象的编程语言,其设计目标是提供高性能的系统级编程。 语法: VB语言的语法较为简单,使用了很多可读性强的关键词,如“
发表于 02-01 10:20
•2263次阅读
MISRA C++:2023,MISRA® C++ 标准的下一个版本,来了!为了帮助您做好准备,我们介绍了 Perforce 首席威廉希尔官方网站
支持工程师 Frank van den Beuken 博士撰写
发表于 01-11 09:00
•582次阅读
在掌握了基于 TCP 的套接字通信流程之后,为了方便使用,提高编码效率,可以对通信操作进行封装,本着有浅入深的原则,先基于 C 语言进行面向过程的函数封装,然后再基于 C++ 进行面向对象的类封装。
发表于 12-26 09:57
•1332次阅读
评论