【发布时间】:2016-06-19 16:54:55
【问题描述】:
我已经阅读了this 和this,但是我仍然不明白为什么下面的代码会在 XCode 中编译:
void func2(string &s) {
s = "yyyyy";
}
void func(string &&s) {
func2(s);
}
int main() {
func("xxxxx");
return 0;
}
我认为不应该将右值引用转换为非常量左值引用,对吧?一般来说,左值引用和右值引用之间的转换规则是什么?我已经知道 const 左值引用可以绑定到右值,但是右值引用(而不是右值)呢?非常感谢!
【问题讨论】:
-
在
string &&ss是一个可以绑定到左值引用的左值。 -
我认为
s是一个右值引用。为什么它是左值?是不是因为它有同一性,它是可移动的?如果是这样,它们之间有什么区别?谢谢! -
记住,如果一个对象有名字,它就是一个左值
标签: c++ c++11 pass-by-reference c++14