Семантика перемещения в C++11 (и последующих стандартах) необходима для оптимизации производительности за счет эффективного использования ресурсов.
Основные цели:
std::vector
), или конкатенация строк, могут быть значительно ускорены за счет перемещения, а не копирования.Как это работает:
&&
), которые связываются с временными объектами или выражениями, чьи результаты не имеют постоянного места в памяти.T::T(T&& other)
) : Вызывается, когда новый объект инициализируется rvalue-ссылкой. Он "крадет" ресурсы у объекта other
(например, переназначает указатель на данные), а затем устанавливает other
в безопасное пустое состояние.T& T::operator=(T&& other)
): Аналогичен конструктору перемещения, но для операций присваивания.c
Семантика перемещения в C++11 (и последующих стандартах) необходима для оптимизации производительности за счет эффективного использования ресурсов.
Основные цели:
std::vector
), или конкатенация строк, могут быть значительно ускорены за счет перемещения, а не копирования.Как это работает:
&&
), которые связываются с временными объектами или выражениями, чьи результаты не имеют постоянного места в памяти.T::T(T&& other)
) : Вызывается, когда новый объект инициализируется rvalue-ссылкой. Он "крадет" ресурсы у объекта other
(например, переназначает указатель на данные), а затем устанавливает other
в безопасное пустое состояние.T& T::operator=(T&& other)
): Аналогичен конструктору перемещения, но для операций присваивания.c
Register or sign in to get access to full answers for all questions from the question bank.