4.5 函数重载

4.5 函数重载

在同一作用域内可以有一组具有相同名字但不同参数的函数。这被称为函数重载。函数重载的概念是:同一个函数名可以对应多个函数实现。例如,可以用函数名 add 定义多个函数,每个函数实现的功能是求和,即求两个操作数的和。一个函数实现是求两个整型数之和,另一个函数实现是求两个浮点型数之和,还有一个函数实现是求两个复数之和。每个函数对应着一个函数体。这些函数的名字相同,但是函数的参数类型不同。这就是函数重载的概念。

函数重载要求编译器能够根据参数来区分函数,即采用不同的函数实现。定义重载函数时,要求在参数的个数或类型上有所不同,或者在参数顺序上有所不同。否则,将无法实现重载。

4.5.1 参数类型上不同的重载函数

参数类型不同的重载函数返回值类型可以相同也可以不同。下面举一个参数类型不同的重载函数的例子。

例4.14 求两个操作数之和:

#include <iostream.h>

int add(int x, int y) {
    return x + y;
}

double add(double a, double b) {
    return a + b;
}

void main() {
    cout << add(5, 10) << endl;
    cout << add(5.5, 10.0) << endl;
}

该程序中,main() 函数调用相同名字 add 的两个函数,前一个 add() 函数对应的是两个 int 型数求和的函数实现,后一个 add() 函数对应的是两个 double 型数求和的函数实现。这便是函数的重载。分析该程序的输出结果如下:

15
15.5

请读者上机验证一下。

4.5.2 参数个数上不同的重载函数

下面举一个在参数个数上不同的重载函数的例子。

例4.15 找出几个 int 型数中的最小者:

#include <iostream.h>

int min(int a, int b) {
    return a < b ? a : b;
}

int min(int a, int b, int c) {
    int t = min(a, b);
    return min(t, c);
}

int min(int a, int b, int c, int d) {
    int t1 = min(a, b);
    int t2 = min(c, d);
    return min(t1, t2);
}

void main() {
    cout << min(13, 5) << endl;
    cout << min(13, 5, 4) << endl;
    cout << min(13, 5, 4, 9) << endl;
}

该程序中出现了函数重载,函数名 min 对应着三个不同的实现,函数的区分依据是参数个数的不同。这里的三个函数实现中,参数个数分别为2, 3和4。在调用函数时根据实参的个数来选取不同的函数实现。

函数重载在C++中是非常常用的,它使得代码更具可读性和灵活性。通过合理使用函数重载,可以简化程序设计,提高代码的重用性。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏驰和徐策

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值