Avatar ·

O que é std::move() e quando usá-lo em C++?

Olá, colegas! Recentemente comecei a estudar C++11 e me deparei com std::move(). Li a documentação, mas não entendi completamente o que é essa fera e para que serve. Tenho este código: ```cpp #include #include #include class MyClass { public: std::string data; MyClass(const std::string& str) : data(str) {} }; int main() { std::vector vec; std::string bigString = "uma string muito longa que ocupa muita memória..."; // Opção 1: apenas adicionamos MyClass obj1(bigString); vec.push_back(obj1); // Opção 2: usamos std::move MyClass obj2(bigString); vec.push_back(std::move(obj2)); return 0; } ``` Eu entendo que std::move() está de alguma forma relacionado a mover, não copiar dados. Mas qual é a diferença? Quando devo usar std::move() e quando é melhor evitar? E o que acontece com o objeto original após a movimentação? Expliquem, por favor, com exemplos simples como isso funciona.