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

c++入门

  • 一.缺省函数
  • 二.函数重载
    • 1.参数类型不同
    • 2.参数个数不同
    • 3.参数顺序不同

一.缺省函数

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

完全缺省
【C++初阶】:缺省函数和函数重载_第1张图片
【C++初阶】:缺省函数和函数重载_第2张图片

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

【C++初阶】:缺省函数和函数重载_第3张图片

【C++初阶】:缺省函数和函数重载_第4张图片

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

【C++初阶】:缺省函数和函数重载_第5张图片

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

部分缺省

【C++初阶】:缺省函数和函数重载_第6张图片

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

【C++初阶】:缺省函数和函数重载_第7张图片

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

缺省函数的声明

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

【C++初阶】:缺省函数和函数重载_第8张图片

【C++初阶】:缺省函数和函数重载_第9张图片

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

二.函数重载

【C++初阶】:缺省函数和函数重载_第10张图片

在这里插入图片描述

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

1.参数类型不同

【C++初阶】:缺省函数和函数重载_第11张图片

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

2.参数个数不同

【C++初阶】:缺省函数和函数重载_第12张图片

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

【C++初阶】:缺省函数和函数重载_第13张图片

【C++初阶】:缺省函数和函数重载_第14张图片

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

3.参数顺序不同

【C++初阶】:缺省函数和函数重载_第15张图片

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

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

你可能感兴趣的:(C++初阶,c++,开发语言,服务器)