что такое использование оператора && с std :: string - PullRequest
0 голосов
/ 03 декабря 2018

Я хотел бы лучше понять использование оператора && в приведенном ниже примере с 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 голосов
/ 03 декабря 2018

Этот код хранит rvalue ссылку на новую строку, полагаясь на продление времени жизни, чтобы сохранить действительную строку.

В этом случае это очень похоже на выполнение const string& x = GetEditTxtAccount(), что также бессмысленно.

Это также возможно опасно, потому что, если функция вернула ссылку, вы могли бы ее повесить.

Конечно, в этом нет никакой пользы.

ПростоВместо этого объявите правильное значение:

const string x = GetEditTxtAccount();

Если вы беспокоитесь о копиях, вы не получите их из-за семантики перемещения (до C ++ 17) и из-за гарантированного исключения(начиная с C ++ 17).

Что касается почему автор написал это так, ну, некоторые люди перебирают rvalue refs, не понимая почему.

...