C++

您所在的位置:网站首页 c语言的原理 C++

C++

2023-03-12 04:07| 来源: 网络整理| 查看: 265

在这里插入图片描述

在这里插入图片描述

文章目录 一、前言【中国乒乓和中国男足】【文言文一词多义】 二、函数重载概念引入1、参数【类型】不同构成重载2、参数【个数】不同构成重载3、参数【类型顺序】不同构成重载 三、函数重载的原理1、回顾程序编译 + 链接的过程2、Linux下【objdump】查看反汇编3、Windows下反汇编查看4、函数名修饰规则总结 解答:为何而C语言不支持函数重载❓错误案例分析🔍四、总结与提炼

一、前言 【中国乒乓和中国男足】

网上呢一直流传着这么两个说法,我国有两个体育项目大家根本不用看,也不用担心。一个是乒乓球,一个是男足。前者是“谁也赢不了!”,后者是“谁也赢不了!

相信了解的读者就可以看出来这两句话的不同含义了,虽然都叫做【谁也赢不了】,但是呢因为这个谁所指代的对象不一样也就造成了这两句话的意思不同其实对于函数重载来说也具有相同的意味,虽然看上去一样,但因为某些内容不一样便造成了函数重载

在这里插入图片描述

【文言文一词多义】

自然语言中,一个词可以有多重含义,人们可以通过上下文来判断该词真实的含义,即该词被重载了

相信你在上初高中的时候一定学习过文言文,里面有一种东西叫做 —— 一词多义,也就是对于一个词来说可以存在不同的含义,它所存在的语境不同就会导致它的意思有所不同从编程语言的角度来说就可以说这个词被重载了,虽然都是一个词,但却具有不同的含义

在这里插入图片描述 通过上述两个生活小案例,相信你对函数重载一定有了一个基本的概念,接下去让我们正式来学习一下函数重载💻

二、函数重载概念引入

【函数重载】:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数 或 类型 或 类型顺序)不同,常用来处理实现功能类似数据类型不同的问题

对于函数重载这个概念,我们在学习C语言的时候是没有听过的,因为在C语言中是不存在函数重载概念的。只有在.cpp的文件中,我们才可以进行函数重载

在这里插入图片描述 在这里插入图片描述 对于C++中的函数重载来说,随着不同类型或者个数的实参传入,编译器会自动识别向对应的函数去进行一个调用

1、参数【类型】不同构成重载 首先第一种就是【类型】不同可以构成函数重载,这个类型值得不仅仅是返回值类型,更重要的是对于形参的类型可以看到,下面的两个函数虽然函数名相同,但是因为形参的类型不同,所以可以处理的数据种类就不一样 int Add(int x, int y) { return x + y; } double Add(double x, double y) { return x + y; } int ret1 = Add(1, 2); double ret2 = Add(1.1, 2.2); 运行结果就不展示了,我们可以通过调试去观察一下编译器是对于重载的函数是否真的可以做到一个自动识别

在这里插入图片描述

2、参数【个数】不同构成重载 第二种的话就是传入实参的个数不同也会可以构成重载。可以看到我写了一个三参的Add函数 int Add(int x, int y) { return x + y; } int Add(int x, int y, int z) { return x + y + z; } int ret1 = Add(1, 2); int ret2 = Add(1, 2, 3); 同样,我们通过调试来观察程序的思维

在这里插入图片描述

3、参数【类型顺序】不同构成重载 最后一种的话可能你没有听说过,若是形参的两个类型顺序发生了改变,那也可以算是函数重载 void Print(int x, char c) { cout return x + y; } double Add(int x, int y) { return x + y; } 【答案揭晓】:No,这样不可以构成函数重载,仅仅是返回值的不同无法编译器认定为是函数重载,因为对于函数名和形参类型完完全全相同的两个函数在进行函数名修饰之后也是一样的

在这里插入图片描述 在这里插入图片描述

可以看到,无论是对于Windows还是Linux下,连编译都是通不过的,所以函数重载只有三种形式,不要搞混淆了 四、总结与提炼

最后我们来总结一下本文所学习的的内容📖

首先在文章的开始,我通过两个生活中的小案例先带读者了解了什么是函数重载的概念。然后讲述了有关函数重载的三种形式,分别是:【类型】不同、【个数】不同和【类型顺序】不同三种。对函数重载有了一个基本的认识然后我们便通过双系统深入探究了对于C++而言对函数在编译之后会进行一个函数名修饰,Linux环境下易理解一些,Windows环境下的解析过于复杂,若是有兴趣的读者可以继续深入

以上就是本文要介绍的所有内容,感谢您的阅读🌹

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3