关于“函数重载”的探讨

---恢复内容开始---

函数重载

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

为什么需要运用“函数重载"这一机制?

若没有函数重载机制,那么对不同类型的数据进行相同的操作时也需要定义名称完全不同的函数。这样在调用的时候会给我们带来极大的不便。我们在学习C语言的时候没有见到函数重载,是因为C++允许功能相近的函数在相同的作用域内以相同函数名定义,从而形成重载。

注意事项:

1:重载函数的形参必须不同:个数不同或者类型不同。

2:使用函数重载时,最好不要使用默认的参数值。

eg;void fun(int length, int width=2,int heigth=3);

        void fun(int length);

当以fun(1)这种形式调用fun函数时,编译器就无法应该执行那个重载函数。

3:不要将不同功能的函数定义为函数重载,以免出现对调用结果的误解。

函数重载实验过程;

实验要求:用重载函数实现两个整数和三个整数的排序,按照从小到大的顺序将排序结果输出.

程序如下:

#include<iostream>
using namespace std;
void rank(int x,int y);
void rank(int a,int b,int c);
int main()
{
 int x,y,a,b,c;
 cin>>x>>y>>a>>b>>c;
 rank(x,y);
 rank(a,b,c);
 return 0;
}
void rank(int x,int y)
{
 if(x>y)
 cout<<y<<" "<<x<<endl;
 else
 cout<<x<<" "<<y<<endl;
}
void rank(int a,int b,int c)
{
 int t;
 if(a>b)
 {
  t=a;
  a=b;
  b=t;
 }
 if(a>c)
 {
  t=a;
  a=c;
  c=t;
 }
 if(b>c)
 {
  t=b;
  b=c;
  c=t;
 }
 cout<<a<<" "<<b<<" "<<c<<endl;
}

运行结果:

 

总结:对于函数重载而言,它可以帮助我们在调用函数的时候,就不需要记忆那么多的方法名称,而是知道了方法的功能就可以直接的给他传递不同的参数,编译器就会明确的知道我们调用了哪一个方法。

 

 

 

 

 

---恢复内容结束---

posted @ 2019-09-14 19:22  木有兮  阅读(373)  评论(1编辑  收藏  举报