正文

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

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

分享到:

 

在编程时,有时我们要实现的是同一类的功能,只是有些细节不同。例如希望从3个数中找出其中的最大者,而每次求最大数时数据的类型不同,可能是3个整数、3个双精度数或3个长整数。程序设计者往往会分别设计出3个不同名的函数,其函数原型为:
int max1(int aint b, int c);              //3个整数中的最大者
double max2(double adouble bdouble c);  //3个双精度数中最大者
long  max3(long along blong 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个长整数的最大值)
上例3max函数的函数体是相同的,其实重载函数并不要求函数体相同。重载函数除了允许参数类型不同以外,还允许参数的个数不同。

阅读(1862) | 评论(0)


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

评论

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