C++之重载函数学习

TXP嵌入式
关注

一、C++中的函数重载:

1、函数重载的概念:

用同一个函数名定义不同的函数

当函数名和不同的参数搭配时函数的含义不同

注意:在c语言中是没有函数重载这个概念的。

代码示例演示:

image.png

上面在c++编译器里面编译时没有问题的,如果放在c语言编译器里面编译是会报错的:

image.png

所以说c语言里面不支持函数重载。

2、函数重载至少要满足下面的一个条件:

参数个数不同

参数类型不同

参数顺序不同

比如下面两个函数可以构造重载函数吗?

image.png

答案肯定是可以构造重载函数的,读者可以自己试试(这个比较好理解)。

3、当函数默认参数遇上函数重载会发生什么?

例如下面的两个函数:

image.png

到底会发生啥,我们还是看下面这个实验:

image.png

运行结果:

image.png

从上面报错的结果里面有一个单词ambiguous(意思是梦棱两可的),也就是说默认参数这种使用时不允许的。

4、C++编译器调用重载函数的准则:

将所有同名函数作为候选者

尝试寻找可行的候选函数:

精确匹配实参

通过默认参数能够匹配实参

通过默认类型转换匹配实参

匹配失败:

最终寻找到的候选函数不唯一,则出现二义性,编译失败

无法匹配所有候选者,函数未定义编译失败

5、函数重载的注意事项:

重载函数在本质上是相互独立的不同函数

重载函数的函数类型不同

函数返回值不能作为函数重载的依据

函数重载是由函数名和参数列表决定的

代码测试:

image.png

运行结果:

image.png

从输出结果我们可以看出这两个函数的入口地址不一样,这表明这两个函数是不同的函数。

6、小结:

函数重载是c++中引入的概念

函数重载的本质是相互独立的不同函数

c++中通过函数名和函数参数确定函数调用

声明: 本文由入驻OFweek维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。
侵权投诉

下载OFweek,一手掌握高科技全行业资讯

还不是OFweek会员,马上注册
打开app,查看更多精彩资讯 >
  • 长按识别二维码
  • 进入OFweek阅读全文
长按图片进行保存