Sobes.tech
Back to questions
Junior — Middle
83

Объясните функцию std::move в C++ и в каких случаях она применяется

Answer from AI

sobes.tech AI

Функция std::move в C++ не перемещает объект сама по себе, а лишь преобразует переданный ей аргумент в rvalue-ссылку. Это позволяет использовать семантику перемещения, то есть передать владение ресурсами объекта другому объекту без копирования.

Применяется std::move в ситуациях, когда нужно явно указать, что объект можно "переместить", например, при возвращении локального объекта из функции или при передаче объекта в конструктор/оператор перемещения.

Пример:

#include <iostream>
#include <vector>

int main() {
    std::vector<int> v1 = {1, 2, 3};
    std::vector<int> v2 = std::move(v1); // v1 теперь пустой, ресурсы переданы v2
    std::cout << "v1 size: " << v1.size() << "\n";
    std::cout << "v2 size: " << v2.size() << "\n";
}

Здесь std::move позволяет избежать копирования элементов вектора, а вместо этого происходит перемещение внутреннего буфера.

Важно: после std::move исходный объект находится в валидном, но неопределённом состоянии, его можно безопасно разрушать или присваивать заново.