Я пытаюсь понять использование std::move
. Не могли бы вы сказать мне, если мои рассуждения верны? Я рассматриваю следующий класс:
class T{
public:
T(string s){
str = move(s);
}
string str;
};
Теперь давайте рассмотрим два способа использования этого класса.
T t("abc");
Вот что происходит эта строка "abc"
сначала создается, а затем ее ресурс перемещается в t.str
. Поэтому строка "abc"
никогда не копируется.
string s = "abc"; T t(s);
Здесь сначала создается строка s
. Затем копия s
передается по значению в конструктор T()
. Наконец, ресурс копии s
перемещен в t.str
. Всего "abc"
копируется один раз.
Это правда?