簡體   English   中英

&&運算符與std :: string的用法是什么

[英]what is the use of the && operator with std::string

我想更好地理解下面示例中std::string運算符&&的使用

碼:

#include <iostream>
using namespace std;

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

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

那么為什么我們在主體中使用運算符&&

謝謝。

這段代碼存儲了對新字符串的右值引用,它依賴生命周期延長來使實際字符串保持活動狀態。

在這種情況下,這很像執行const string& x = GetEditTxtAccount() ,這也是毫無意義的。

這也可以說是很危險的,因為如果函數返回了引用,則可能會使它懸空。

當然這樣做沒有任何好處。

只需聲明一個適當的值即可:

const string x = GetEditTxtAccount();

如果您擔心副本,由於移動語義(C ++ 17之前的版本)和有保證的省略號(自C ++ 17起),您將一無所獲。

至於作者為什么這樣寫,好吧,有些人在沒有真正理解原因的情況下就使用了右值引用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM