Рассмотрим следующий псевдокод:
класс Параметр {
double значение_;
public:
Параметр& задать(const double& зн){ значение_=зн; return *this; }
Параметр& задать(double && зн){ значение_=зн; return *this; }
};
но вернее будет общий случай
template
В чём может быть профит от использования здесь rvalue? Я понимаю, что так как в любом случае идёт копирование в rvalue нет никакого смысла.
Покажите, пожалуйста, на примере близком к этому когда же может получится польза.
На (2) пример бы написал такой(благодарю ixSci)
класс Параметр {
std::string значение_;
public:
Параметр& задать(const std::string & зн){ значение_=зн; return *this; }
Параметр& задать(std::string && зн) { значение_=std::move(зн); return *this; }
};
Получается на сложных объектах это может сэкономить производительность.
Ответ
rvalue-ссылка интресена только для объектов, чей класс предусматривает оптимизорованный продуманный специальный конструктор перемещения. Хорошая STL - хороший пример.
На простых типах от неё толку как от обычной ссылки - может сэкономить копирование нескольких маш.слов = sizeof(type)-sizeof(void*). То есть при копировании большого массива double на 32-битной машине даст 2ую экономию.
подходит.
Благодарю @ixSci. Я перефразировал до краткости по сути вопроса.
Комментариев нет:
Отправить комментарий