c++11下对std::move使用,下述代码错误的是
时间: 2023-05-02 16:06:34 浏览: 116
c++11 std::move() 的使用
5星 · 资源好评率100%
错误的是第三行代码,应该改为`std::vector<int> b = std::move(a);`。
`std::move`是C++11中新增的一个工具函数,用于将一个变量的所有权转移给另一个变量。在使用`std::move`的时候需要注意以下几点:
1. 前提条件:要移动的对象必须是个右值,即将要被销毁的值。
2. 语义:使用`std::move`并不能移动东西,它只是将原来的对象转变成右值引用,从而避免了数据的复制。移动操作一般实现在类的移动构造函数和移动赋值运算符中。
3. 使用方式:`std::move`函数接受一个左值参数,并返回一个右值引用,表示将该参数变成一个右值。因此在使用`std::move`时,需要将返回的结果赋给一个右值引用变量或者直接传递给一个函数,以便使用移动构造函数或移动赋值运算符。
回到题目中,第三行代码使用了`std::move`的语法,但是将结果赋给了一个左值引用变量`b`,也就是说,它的结果是一个左值。正确的做法应该是将结果赋给一个右值引用变量或者直接传递给一个函数。
阅读全文