栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

函数重载--图文理解

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

函数重载--图文理解

基本介绍

C语言不支持同名函数,而C++支持
C++支持的这一操作叫函数重载

函数重载的要求:
函数名可以相同
但参数必须不同,参数的个数/类型/顺序不同
上图就是属于类型不同
顺序不同

 

类型不同
 

个数不同

 

返回值不同,但传的参数相同,不构成函数重载

 

这种情况下编译就会报错,函数传过去的参数万一两个都是int型的,那它调用的是哪个函数就不明确,所以函数重载重点是在类型上。

函数重载有什么用呢?

首先在C语言中,实现一个功能,对于传参是不同的类型,可能要写多个函数,且这些函数名不能相同,这样每次调用就很麻烦,以Swap()交换函数为例,Swap1(int a,int b),
Swap2(int a,double b)等就要写出多个swapxxx()的函数,且每次调用可能还记不住用哪个swapxxx函数。为了解决这个问题就在CPP中出现了函数重载。同一个功能的实现可以用同一个函数名。

深度理解函数重载

函数在C++的编译状态下,转为汇编代码会变成这样的命名形式,以此图为列

在编译阶段转为汇编会变成

 

 

_z是编译器自带的翻译的,后面的2是函数名的长度,pf是函数名,i和 d分别是变量类型的首字母。
所以在重载函数中,参数是重点,参数必须不同,编辑器就是根据以上原理来判断,并在链接时如何调用哪个函数。 

如图。
而在C语言中,则是直接转汇编用的函数名,并没有函数重载这一方法,编译器难以判断如何调用,所以在C++引入并支持重载函数。
如图

 

这是C语言编译时转为汇编代码时直接用的函数名,无参数参与转汇编 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/892484.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号