【发布时间】:2015-04-23 13:47:30
【问题描述】:
我正在研究右值引用,我对以下代码有疑问:
string func() {
return "Paul";
}
int main()
{
string&& nodanger = func();
// The lifetime of the temporary is extended
// to the life-time of the reference.
return 0;
}
问题是:func() 返回什么?
我相信会发生这种情况:
- func 返回一个纯右值“Paul”(由于右值->指针转换,这是一个 const char * 吗?)
- 隐式构造了一个字符串对象(使用了哪个 ctor?)
- 由于引用折叠规则,它被绑定到“nodanger”(这与字符串和普通引用有什么不同吗?)
【问题讨论】:
-
这甚至不会编译。
middle_name()是什么?你在哪里返回一个右值引用?func()只是按值返回一个字符串,因此没有右值引用。 -
看看这篇关于Rvalue References and Move Semantics的文章。一如既往地Alex Alllain,写了一篇超级文章。这对我帮助很大。
标签: c++ c++11 rvalue-reference