C++中的重载函数

在编程为函数命名时,我们总希望可以见其名知其义。不过,有些时候表义相同的函数处理的数据对象类型和数量不同,实现的代码也存在一定差别。C++中允许定义多个同名函数,各个函数的参数集是不同的,这些函数称为重载函数。编译器在编译时根据不同参数的类型和个数选择调用哪个函数。函数重载常用于生成几个类似任务而处理数据个数和类型不同的函数。

如下是一个简单的例子,用来求两个或三个整数的最大值。

#include<iostream>

using namespce std;

int max(int,int);

int max(int,int,int);

int main(){

    cout<<max(5,3)<<endl;

    cout<<max(4,8,3)<<endl;

}

int max(int a,int b)

{    return a > b?a:b;}

int max(int a,int b,int c){

    int t;

    t = max(a,b);

    return max(t,c);

}

注意,C++编译器只根据参数表进行重载函数的调用匹配,函数返回值的内容不起作用。例如:

int average(int,int);

double average(int,int);   //编译报错,编译器认为函数重复说明。

另外要注意重载函数中使用默认参数时可能产生的二义性。例如:

int max(int,int);

int max(int,int,int = 0);

则调用 max(5,3),无法选择调用版本。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容