考虑以下代码:
class A {
private:
std::string data;
public:
void set_data(std::string&& data) {
this->data = std::move(data); // line 6
}
};
int main() {
std::string move_me = "Some string";
A a;
a.set_data(std::move(move_me)); // line 13
}
Run Code Online (Sandbox Code Playgroud)
我知道我们需要调用std::move()第13行,以便它向左值引用转换左值(这听起来是否正确?我是新手).
但是,在第6行,我们需要std::move()再次使用吗?我假设没有,因为我们已经传递了一个右值引用,并且std::string将调用移动构造函数.那是对的吗?