c++中的重载函数
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
重载函数
几个不同的函数有着相同的名字,在调用时根据参数的不同来确定调用哪个函数,这就是C++提供的函数重载机制。
所谓重载(overload)函数就是在同一个作用域内几个函数名字相同但形参列表不同。例如在同一个作用域内同时定义几个add()函数。
void add(int x, int y);
void add(float x);
double add(double x, double y);
这几个就是重载函数,它们函数名相同但参数列表却不相同,参数列表的不同有三种含义:参数个数不同,或者参数类型不同或者参数个数和类型都不同。
重载与const形参
如果是底层的const形参,即const修饰的是指针指向的变量,则通过区分其指向的是常量对象还是非常量对象可以实现函数重载,例如下面两对函数:
void func1(int *x); //普通指针
void func1(const int*x); //常量指针
void func2(int &x); //普通引用
void func2(const int &x); //常引用
重载和默认参数
当使用具有默认参数的函数重载形式时须注意防止调用的二义性,例如下面的两个函数:
int add(int x, int y = 1);
void add(int x);
注意:当有如下函数调用时就会产生歧义:add(10);它既可以调用第一个add()函数也可以调用第二个add()函数,编绎器无法确认到底要调用哪个重载函数,这就产生了调用的二义性