const string& s = "rajat";
工作时
string& s = "rajat";
没有。为什么?
最佳答案
"rajat"
不是 std::string
,它是一个由 6 个 char
组成的以 null 结尾的数组,即 字符[6]
您可以从以 null 结尾的 char
数组构造一个 std::string
,这就是您编写时会发生的情况:
std::string s = "rajat";
当您想要初始化string&
时,您必须有一个string
作为要绑定(bind)的引用,因此编译器会尝试构造一个string
来自 char
数组并将引用绑定(bind)到该数组,即
std::string& s = std::string("rajat");
但是这是非法的,因为构造的string
是一个临时对象,非常量引用不能绑定(bind)到临时对象,请参阅How come a non-const reference cannot bind to a temporary object?
关于c++ - 在 C++ 中初始化引用不起作用,但初始化 const 引用却起作用,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17132190/