我不明白为什么这个程序会产生下面的输出。
void blah(const char* ) {printf("const char*\n");}
void blah(const std::string&) {printf("const string ref\n");}
template<class t>
void blah(t) {printf ("unknown\n");}
int main(int, char*)
{
blah("hi");
char a[4];
blah(a);
std::string s;
blah(s);
getch();
}
输出:
const char*
unknown
const string
在 VS2008 中。它愿意将 std::string 转换为 const 引用,但为什么不将 char* 转换为 const char* 并使用重载?