Avatar ·

¿Qué es std::move() y cuándo usarlo en C++?

¡Hola, colegas! Recientemente empecé a estudiar C++11 y me topé con std::move(). Leí la documentación, pero no terminé de entender qué es esta bestia y para qué sirve. Tengo 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 = "una cadena muy larga que ocupa mucha memoria..."; // Opción 1: simplemente agregamos MyClass obj1(bigString); vec.push_back(obj1); // Opción 2: usamos std::move MyClass obj2(bigString); vec.push_back(std::move(obj2)); return 0; } ``` Entiendo que std::move() está relacionado con mover, no copiar datos. Pero ¿cuál es la diferencia? ¿Cuándo debo usar std::move() y cuándo es mejor evitarlo? ¿Y qué pasa con el objeto original después del movimiento? Explíquenme, por favor, con ejemplos simples cómo funciona esto.