Введение в перемещение объектов в C++
Перемещение отдает массив нового объекта без копирования элементов. Сам буфер в памяти тот же, меняется указатель в поле.
Так поступают с временным объектом, например с результатом
функции: он скоро исчезнет, и копировать массив незачем.
Запишем функцию, которая возвращает Box по значению:
class Box {
public:
int* ptr;
Box() {
ptr = new int[1];
ptr[0] = 42;
}
~Box() {
delete[] ptr;
}
};
Box make_box() {
Box fresh;
return fresh;
}
Сейчас примем объект из функции:
int main() {
Box holder = make_box();
std::cout << holder.ptr[0] << "\n";
return 0;
}