C++函数重载

函数重载是什么?

是指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数(函数返回值不能区分重载)


为什么要函数重载?

减少了函数名的数量,避免了名字空间的污染,对于程序的可读性有很大的好处


C++中为什么不将函数返回类型考虑到函数重载中

这样设计能够保证函数调用能够独立于上下文,不依赖与上下文


重载函数的调用时如何匹配的?

为了估计哪个重载函数最适合,需要依次按照下列规则来判断:

1、精确匹配:参数匹配而不做转换,或者只是做微不足道的转换,如数组名到指针、函数名到指向函数的指针、T到const T;

2、提升匹配:即整数提升(如bool 到 int、char到int、short 到int),float到double

3、使用标准转换匹配:如int 到double、double到int、double到long double、Derived*到Base*、T*到void*、int到unsigned int;

4、使用用户自定义匹配;

5、使用省略号匹配:类似printf中省略号参数

void print(int);
void print(const char*);
void print(double);
void print(long);
void print(char);
 
void h(char c,int i,short s, float f)
{
     print(c);//精确匹配,调用print(char)
     print(i);//精确匹配,调用print(int)
     print(s);//整数提升,调用print(int)
     print(f);//float到double的提升,调用print(double)
 
     print('a');//精确匹配,调用print(char)
     print(49);//精确匹配,调用print(int)
     print(0);//精确匹配,调用print(int)
     print("a");//精确匹配,调用print(const char*)
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值