函数重载

函数重载是在C语言的学习中未涉及的新概念。我们在编程时经常会遇到这样一个问题:我们编写完一个函数准备准备调用时,一旦需要传入不同的数据类型的参数时,一个函数无法实现,我们又必须重写另一个或者多个命名不用的功能近似的函数才能实现其操作,但是显然,对于实现相同功能传入不同的数据类型参数却需要调用不同名的函数,这增加了无谓的难度。这时,函数重载提供给了我们一个解决方法.

(1)定义:两个或者以上的具有相同函数名,但是形参类型或者个数不同,编译器会根据实参和形参的类型及个数的最佳匹配,自动确定调用哪一个函数。

有了函数重载之后,我们在函数功能近似但函数参数不同的情况下,无须对函数命名不同的名字,编译器会自动匹配。

例如对x+y函数功能的实现:

#include<iostream>
using namespace std;
int add(int a, int b)
{
return a + b;
}
double add(double a, double b)
{
return a + b;
}
int main()
{
int a, b;
double c, d;
cout << "输入两个int值" << endl;
cin >> a >> b;
cout << "输入两个double值" << endl;
cin >> c >> d; cout << "int值的和为" << add(a, b)<<endl;
cout << "double值的和为" << add(c, d) << endl; return ;
}

输出结果为:

代码编译可以表明:对于调用相同函数名函数,编译器会自动匹配。

注意:重载函数的参数必须在参数个数或者类型方面有所不同,如果函数名相同,形参类型也相同,在编译时会被认为是语法错误。

重载函数的正确表现形式:

int  add(int x,int y);
double add(double x,double y);

或者:

int add(int x,int y);
int add(int x,int y ,int z);

需要额外注意的是,不要将不同功能的函数定义为重载函数,以免出现对调用函数结果的误解、混淆。

(2)当使用函数重载时,应避免出现二义性,这也会使编译器出现语法错误。

声明:

int add(int x, int y=,int z=);

int add(int x);

调用:

add();

此时便会出现语法错误。

(3)总结出现二义性的情况:

1、形参个数一致,仅仅是形参名或者返回值不同
2、重载函数有一个形参有默认参数时
3、重载函数形参在同位置分别类型为传值或者传引用。

最新文章

  1. 关于GIL
  2. java-API中的常用类,新特性之-泛型,高级For循环,可变参数
  3. 【原】webpack学习笔记
  4. svn安装【转载】
  5. 使用cookie保存页面登录信息
  6. Awesome Deep Vision
  7. AES加密解密的例子小结
  8. hdu4293Groups
  9. 第一个php网页
  10. 微信,QQ这类IM app怎么做——谈谈Websocket
  11. Linux Mysql Client 查询中文乱码
  12. java学习记录
  13. USACO全部月赛及GateWay数据
  14. js修改title
  15. 裸辞两个月,海投一个月,从Android转战Web前端的求职之路
  16. 使用EMQ搭建MQTT服务器
  17. 使用AltSearch格式化Kindle读书笔记
  18. SQL脚本--总耗CPU最多的前个SQL --平均耗CPU最多的前个SQL
  19. qsub
  20. 观察者模式C#实现实例(二)

热门文章

  1. 模板与泛型编程 c++ primer ch16.1
  2. centos 安装redis2.8.9
  3. Breakpoint 断点只生效一次
  4. 计蒜客 Red Black Tree(树形DP)
  5. apache添加虚拟主机(windows下)
  6. [Vue CLI 3] 配置解析之 css.extract
  7. Codeforces 436C
  8. Spring中使用DataSourceTransactionManager进行事务管理的xml配置
  9. Java编程基础23——IO(其他流)&amp;Properties
  10. java方法重写规则 重载