函数的重载

本文介绍了C++中的函数重载概念,强调了重载函数必须通过参数个数或类型来区别。调用重载函数时,编译器依据实参决定调用哪个函数。返回值类型不能作为重载依据。同时提醒注意不应重载main()函数和避免使用形参默认值可能导致的混淆。最后,提到了操作符重载的限制。
摘要由CSDN通过智能技术生成

函数重载(overload)是指多个函数使用相同的函数名。函数重载是多态性的体现,即使用同一个函数名实现多种函数调用。
调用重载函数时,C++编译器根据函数的实参类型来确定所调用的函数。因此,重载函数定义时,必须使彼此在参数个数参数类型上有所不同。
在调用同名函数时,编译器怎么知道到底调用的是哪个函数呢?编译器是根据函数调用语句中实参的个数和类型来判断应该调用哪个函数的。因为重载函数的参数表不同,而调用函数的语句给出的实参必须和参数表中的形参个数和类型都匹配,因此编译器才能够判断出到底应该调用哪个函数。
仅返回值不同,不能定义为重载函数。因为C++允许 return 语句返回的表达式的类型与函数的类型不同(这时由系统做自动强制类型转换),在函数调用时编译器并不关心函数的返回值类型,而在函数返回时才涉及函数的返回值类型。

此外,还需注意两点:
(1)不允许重载main() 函数,因为main()函数是C++程序执行的唯一入口
(2)函数重载时,避免使用形参的默认值。
比如:
int add( int x, int y, int z=10) {return x+y+z}
int add(int x, int y) {return x+y}
此时调用函数 add( 5, 10)时,系统不确定调用哪个add()方法。

大部分的操作符可以被重载(其实质也是函数的重载),**"."、"::"、"? :“和"sizeof”**不可被重载。只能通过成员函数进行重载的: “=”、"()"、"[ ]"、"->"。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值