std::move()使用举例
时间: 2023-07-17 17:09:49 浏览: 93
当我们想要将一个对象的所有权转移到另一个变量时,可以使用std::move()函数。下面是一个使用std::move()的简单示例:
```cpp
#include <iostream>
#include <string>
class MyObject {
public:
MyObject() {
std::cout << "Constructor called" << std::endl;
}
MyObject(const MyObject& other) {
std::cout << "Copy constructor called" << std::endl;
}
MyObject(MyObject&& other) {
std::cout << "Move constructor called" << std::endl;
}
};
int main() {
MyObject obj1; // 创建一个MyObject对象
MyObject obj2(std::move(obj1)); // 使用std::move()将obj1的所有权转移到obj2
return 0;
}
```
输出结果:
```
Constructor called
Move constructor called
```
在上面的示例中,我们创建了一个名为`obj1`的`MyObject`对象,并将其作为参数传递给了`std::move()`函数。`std::move()`函数将`obj1`转换为右值引用,然后构造了一个新的`MyObject`对象`obj2`,同时将`obj1`的所有权转移到了`obj2`。通过输出结果可以看到,使用了`std::move()`后会调用移动构造函数来完成转移操作。
需要注意的是,在使用了`std::move()`之后,原来的对象`obj1`处于有效但未定义的状态,不应再对其进行访问。只有在确保不再使用原对象时,才应使用`std::move()`来转移其所有权。
阅读全文