函数重载

函数重载

类似于C++提供的库函数max()可以用来求两个数的最大值;如下所示

#include <iostream>
#include <algorithm>//需要包含头文件<algorithm>
using namespace std;

int main()
{
    int a=9,b=10;
    double x=1.2,y=8.7;
    cout<<"int型的a和b之间最大值为:"<<max(a,b)<<endl;
    cout<<"double型的x和y之间最大值为:"<<max(x,y)<<endl;
    return 0;
}
//运行结果为
int型的a和b之间最大值为:10
double型的x和y之间最大值为:8.7

a与b均为int类型的数据,x与y为double型的数据,而这两对数据的比较确可以都使用一个函数来实现。这涉及到函数重载问题。

函数重载定义

函数重载是指在一个程序中,可以定义多个具有相同函数名,不同参数列表的函数(至少参数的类型或参数个数或参数类型的顺序不同)。这些函数被称为重载函数。
当调用一个重载函数时,编译系统将通过检查函数调用中的实参个数、类型和顺序来选择恰当的函数。

  • 形参列表中形参个数相同,类型不同
#include <iostream>
using namespace std;

int Abs(int x)
{
    return x>0?x:-x;
}

double Abs(double x)
{
    return x>0?x:-x;
}

int main()
{
    int a=-9;
    double b=-2.4;
    cout<<"a的绝对值为:"<<Abs(a)<<endl;
    cout<<"b的绝对值为:"<<Abs(b)<<endl;
    return 0;
}

上述代码中定义了两个具有相同函数名Abs()的函数,分别用来求int、double类型的数据的绝对值,在main()中调用是,编译系统会根据不同的实参调用不同的具体的函数。
也注意到,函数的返回值可以不同。

  • 形参列表中形参个数不同
#include <iostream>
using namespace std;

int add(int a,int b)
{
    return a+b;
}
int add(int a,int b,int c)
{
    return a+b+c;
}

int main()
{
    int x=10,y=20,z=50;
    cout<<add(x,y)<<endl;
    cout<<add(x,y,z)<<endl;
    return 0;
}
//运行结果
x+y=30
x+y+z=80

注意到上述程序定义了两个具有相同名称的函数add(),不同的是第一个add()的形参列表中有两个int型的数据。第二个add()的形参列表有三个int类型的数据。
因此当计算两个int型的数据的和时,编译系统会选择第一个add()运行。
因此当计算三个int型的数据的和时,编译系统会选择第二个add()运行。

函数重载的情况非常多,不仅仅有这两种。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值