¿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.