多了不说,看下面程序
#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,望高手指点,谢谢.