[英]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.