Семантика перемещения в C++

Аватар автора
QT Creator
Семантика перемещения (англ. move semantics) — собирательное название специализированных средств языка программирования C++, которые предназначены для осуществления перемещения данных во время инициализации и конструирования новых объектов, что позволяет сократить издержки на копирование. Для практического осуществления семантики перемещения в синтаксис C++ введены rvalue ссылки, а также конструкторы перемещения и перемещающий оператор присваивания. Появление в стандарте языка C++ семантики перемещения состоялось с выходом обновлённого стандарта C++11; оно было продиктовано необходимостью оптимизировать вычислительные расходы там, где до этого применялась семантика передачи по значению. Введение семантики перемещения данных в стандарт языка получило высокую оценку сообщества разработчиков ввиду того, что она даёт широкие возможности для оптимизации внутреннего кода вызовов функций и методов классов. Эта оптимизация достигается отказом от копирования данных при создании временных объектов, у которых отсутствует необходимость сохранять свои внутренние ресурсы для дальнейшего использования. Появление в стандарте семантики перемещения потребовало формализовать вывод аргументов параметризованных типов (шаблонов) и их использование, в связи с чем появился регламент прямой передачи, а «правило трёх» эволюционировало в «правило пяти»: теперь при управлении памятью помимо конструктора копирования, деструктора и копирующего оператора присваивания разработчику требуется определить...

0/0


0/0

0/0

0/0