<C++>_函数重载
来源:互联网 发布:清华大学材料学院知乎 编辑:程序博客网 时间:2024/05/16 09:51
对于C++中函数的重载,我们先来看看下面的几行代码:
很简单的两个函数,我们可以发现,其实这两个函数都是为了实现同一个功能:判断形参是正数还是负数,如果是正数则返回自己,如果是负数则返回相反数。
功能一样的函数却因为形参的不同要弄出两个函数来,显然有点啰嗦了,所以为了提高代码的简洁,C++提出了函数重载功能。
我们先来看看怎样才能实现函数重载:
1.函数名相同
2.参数的个数、类型、排序不相同
3.返回值的类型不同不能构成重载
实践是检验真理的唯一标准,那么我们来看看代码吧!
这段代码中,我们定义了两个同名函数,它们不但没有被报错,反而还能正常地执行。我们发现,其实它们真正的不同也只有形参的类型不同(printf函数里随便输出的就忽略了)。
从打印的结果我们可以发现,当形参是整数时,自动调用了形参是整数的那个函数,而当形参是2.5时,就调用了下面的print函数。
其实print函数是实现了重载!
我们再往下看:
3个print由于形参的类型或形参的个数或排列方式的不同,构成了C++伟大的函数重载。
我们还说,函数的返回值不同不能构成函数重载,我们来试一试:
代码编译出错了,ambiguating就是二义性的意思。
函数重载遵循严格的调用匹配原则,这点我们需要特别注意。
匹配原则:
1.严格匹配,找到则调用
2.通过隐式转换寻求一个匹配,找到则调用
例如:
我们知道‘a’是个字符,它通过隐式转换寻找到了int,所以程序调用了第一个print函数。
我们需要注意的是,C++允许,int到long和double,double到int和float的隐式类型转换,遇到这种情形,则会引起二义性。
上面的代码都编译错误了,因为对于int可以隐式转换成long或者double,double可以隐式转换成int和float,计算机不知道选择哪个函数来实现,所以就报错了。
广西师范大学 全宏春
- C++_函数重载
- <C++>_函数重载
- C++_函数的重载使用举例
- C/C++_两种函数不能重载的情况
- 0004_函数重载
- 《21天学通C#》笔记_程序清单9.2_构造函数重载
- 黑马程序员_函数重载
- C++风格_函数重载
- C++_运算符重载
- C++_运算符重载
- C++_运算符重载
- C++_运算符重载
- C++_运算符重载
- C++_运算符重载
- C++_运算符重载
- C++_运算符重载
- C++_运算符重载
- C++_运算符重载
- 求3×3矩阵对角线元素之和---2种方法
- Mysql5.7.16安装教程
- 服务器 进程实现
- POJ 2393 Yogurt factory 笔记
- 弗洛伊德法求最短路径
- <C++>_函数重载
- Android开发艺术探索笔记(15)- 自定义View
- 表单提交数据乱码(datatables提交中文查询处理)
- 面向对象(猜字游戏)
- android中常用的距离单位
- input输入框下拉提示、js的keyup的实现、
- 公司发版shell脚本重构
- 如何重新修改sourceinght的注册序列号
- VS2008的常见问题