&&运算符与std :: string的用法是什么

时间:2018-12-03 12:04:53

标签: c++ rvalue-reference

在下面的示例中,我想通过std::string

更好地理解运算符&&的使用

代码:

#include <iostream>
using namespace std;

const std::string GetEditTxtAccount()
{
 std::string str = "Hello";
 return str;
}

int main()
{
   const string&& x = GetEditTxtAccount();
               ^^^
}

那为什么我们在主体中使用运算符&&

谢谢。

1 个答案:

答案 0 :(得分:7)

此代码存储了对新字符串的右值引用,它依赖生命周期扩展来使实际字符串保持活动状态。

在这种情况下,这很像做const string& x = GetEditTxtAccount(),这也是毫无意义的。

这也可以说是危险的,因为如果该函数返回了引用,则可能会使它悬空。

这样做肯定没有好处。

只需声明一个适当的值即可

const string x = GetEditTxtAccount();

如果您担心副本,则由于移动语义(C ++ 17之前的版本)和有保证的省略号(自C ++ 17起)而不会获得副本。

关于为什么的作者这样写,好吧,有些人在没有真正理解原因的情况下就使用右值引用。