Avatar ·

什么是 std::move() 以及何时在 C++ 中使用它?

大家好!我最近开始学习 C++11,遇到了 std::move()。我读了文档,但还是没完全明白这是什么以及它的用途。我有这样的代码: ```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 = "很长很长的字符串,占用很多内存..."; // 选项1:直接添加 MyClass obj1(bigString); vec.push_back(obj1); // 选项2:使用 std::move MyClass obj2(bigString); vec.push_back(std::move(obj2)); return 0; } ``` 我知道 std::move() 与移动而非复制数据有关。但区别是什么?什么时候应该使用 std::move(),什么时候最好避免?移动后原始对象会发生什么?请用简单的例子解释一下。