【发布时间】:2011-04-12 14:10:21
【问题描述】:
考虑以下内容。
#include <string>
using std::string;
string middle_name () {
return "Jaan";
}
int main ()
{
string&& danger = middle_name(); // ?!
return 0;
}
这不计算任何东西,但它编译时没有错误,并演示了一些我觉得令人困惑的东西:danger 是一个悬空引用,不是吗?
【问题讨论】:
-
让我困惑的是,你可以在左侧使用 &&,什么时候有用?
-
@Viktor:右值引用可以绑定到一个临时的并且仍然可以修改。例如
int &&variable_or_dummy = modify_var? move(var) : int(); -
你命名一个右值它变成一个左值,所以在 main
danger是一个左值。右值或左值是表达式的属性