【C++初阶】:缺省函数和函数重载

一.缺省函数

缺省函数,顾名思义就是可以在传参时不传或者少传参数的函数。这里举个例子:

完全缺省
在这里插入图片描述
在这里插入图片描述

上面的就属于全缺省,可以不传任何参数,当然也可以传参数,这样会覆盖原来的值。

在这里插入图片描述

在这里插入图片描述

但要注意的是传参必须从左至右依次传入,不能跳过中间某一个参数去传另一个。

在这里插入图片描述

这里如果我跳过b参数去传c,那么很明显是不被允许的。

部分缺省

在这里插入图片描述

像这种部分缺省的必须给缺省部分传参数,当然后面不缺省的可传可不传。上面我们说到不可跳跃传参,那么这里函数设计时自然也不可以跳跃创建形参。

在这里插入图片描述

这样的写法也是不被允许的。

缺省函数的声明

大家可以发现在函数跨文件使用时,我们常常会创建一个.h的文件来包含函数的声明,那么此时会出现一个问题,就是缺省函数在声明和定义时改怎么传参呢?根据c++的语法,其实是在声明阶段缺省,定义时不能缺省(上面的例子是函数在同一源文件且函数在使用时的上面,所以声明和定义是一体的)。

在这里插入图片描述

在这里插入图片描述

具体原因其实是在程序在编译阶段时的特性所产生的,这里就不多讨论啦。

二.函数重载

在这里插入图片描述

在这里插入图片描述

在c语言中,同一函数名是不能重定义的,但在c++里如果满足条件是可以使用的。

1.参数类型不同

在这里插入图片描述

上述两个函数名相同,但函数参数类型不同,是可以同时存在的(注意是参数类型,跟返回值类型无关)。

2.参数个数不同

在这里插入图片描述

上面很好理解,那么如果参数是缺省函数呢?答案是也可以,但传参有要求。

在这里插入图片描述

在这里插入图片描述

以上面的函数为例,如果传参为0的话会造成歧义,所以必须传一个参。

3.参数顺序不同

在这里插入图片描述

注意这里的顺序不是指形参的不再顺序不同,是指不同类型形参的顺序不同。

插个小知识,为什么c++能支持同名函数(函数重载)呢?简单来说,在链接阶段 ,每个函数都会有一个地址,而函数的地址就是函数名的地址,而在c中同名函数的地址是相同的会造成冲突。而在c++中有一个函数的命名规则,函数在编译地址时,函数名会自动带上参数类型的缩写(例如f(int a,char c),缩写就是fac,当然这是gcc的规则,vs的命名需要对照手册才能看懂),所以就能解释为什么参数不同,c++就可以区分不同函数了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咸蛋挞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值