什么是 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(),什么时候最好避免?移动后原始对象会发生什么?请用简单的例子解释一下。