关于重载函数调用时候const形参的一些问题

多了不说,看下面程序

 

#include <iostream>
using namespace std;
void f(char&){cout<<"char&"<<endl;}
void f(char) {cout<<"char"<<endl; }
int main()
{ char a='b';
 f(a);
}
结果是二义性,说明了用char调用f时,f(char&)与f(char)一样,是精确匹配,否则不可能有二义性

 

 

#include <iostream>
using namespace std;
void f(const char&){cout<<"const char&"<<endl;}
void f(char&) {cout<<"char&"<<endl; }
int main()
{ char a='b';
 f(a);
}
结果是char&,这个说明了用char调用f时,f(char&)匹配等级高于f(const char&),我说的没错吧

 

 

如果上述都没问题的话,那么用char调用f时,f(char)匹配等级是不是应该比f(const char&)高,请看下面程序
#include <iostream>
using namespace std;
void f(const char&){cout<<"const char&"<<endl;}
void f(char) {cout<<"char"<<endl; }
int main()
{ char a='b';
 f(a);
}
结果确令人意外,还是出现了二义性.我用的是VS2005,望高手指点,谢谢.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值