考虑这个片段:
void foo(const string &s, char &c)
{
// do something
}
int main()
{
foo("Hello World!",'o');
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这段代码编译得很好。
当我调用 时foo,因为我可能会传递一个字符串文字作为参数的s参数,所以s需要是const string &,因为字符串文字不能转换为普通引用。但是为什么c参数不是这种情况呢?我可以char很好地传递文字,而不必c引用const. 为什么是这样?