正文

C++ 入门 第四章 4.6 函数的重载2008-09-06 11:21:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/yzrj/38120.html

分享到:

  在编程时,有时我们要实现的是同一类的功能,只是有些细节不同。例如希望从3个数中找出其中的最大者,而每次求最大数时数据的类型不同,可能是3个整数、3个双精度数或3个长整数。程序设计者往往会分别设计出3个不同名的函数,其函数原型为: int max1(int a,int b, int c);              //求3个整数中的最大者 double max2(double a,double b,double c);  //求3个双精度数中最大者 long  max3(long a,long b,long c);      //求3个长整数中的最大者 C++允许用同一函数名定义多个函数,这些函数的参数个数和参数类型不同。这就是函数的重载(function overloading)。即对一个函数名重新赋予它新的含义,使一个函数名可以多用。   对上面求最大数的问题可以编写如下的C++程序。 例4.5 求3个数中最大的数(分别考虑整数、双精度数、长整数的情况)。 #include <iostream> using namespace std; int main( ) {int max(int a,int b,int c);                //函数声明 double max(double a,double b,double c);    //函数声明 long max(long a,long b,long c);            //函数声明  int i1,i2,i3,i;                             cin>>i1>>i2>>i3;                         //输入3个整数  i=max(i1,i2,i3);                         //求3个整数中的最大者  cout<<″i_max=″<<i<<endl;  double d1,d2,d3,d;     cin>>d1>>d2>>d3;                         //输入3个双精度数  d=max(d1,d2,d3);                         //求3个双精度数中的最大者  cout<<″d_max=″<<d<<endl;  long g1,g2,g3,g;  cin>>g1>>g2>>g3;                         //输入3个长整数   g=max(g1,g2,g3);                         //求3个长整数中的最大者  cout<<″g_max=″<<g<<endl; } int max(int a,int b,int c)                //定义求3个整数中的最大者的函数 {if(b>a) a=b;  if(c>a) a=c;  return a; } double max(double a,double b,double c)   //定义求3个双精度数中的最大者的函数 {if(b>a) a=b;  if(c>a) a=c;  return a; } long max(long a,long b,long c)           //定义求3个长整数中的最大者的函数 {if(b>a) a=b;  if(c>a) a=c;  return a; }   运行情况如下: 185   -76   567↙             (输入3个整数) 56.87  90.23  -3214.78↙        (输入3个实数) 67854  -912456  673456↙        (输入3个长整数) i_max=567                      (输出3个整数的最大值) d_max=90.23                    (输出3个双精度数的最大值) g_max=673456                   (输出3个长整数的最大值) 上例3个max函数的函数体是相同的,其实重载函数并不要求函数体相同。重载函数除了允许参数类型不同以外,还允许参数的个数不同。

阅读(1870) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册