为什么字符文字不要求函数的参数是对 const 的引用?

Tra*_*net -4 c++ c++11

考虑这个片段:

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. 为什么是这样?

eer*_*ika 5

为什么字符文字不要求函数的参数是对 const 的引用?

他们确实需要它。显示的程序格式错误。

这段代码编译得很好。

如果编译器不发出诊断消息,则它不符合 C++ 标准。