gpt4 book ai didi

c++ - 右值引用失去了它的本质

转载 作者:行者123 更新时间:2023-11-28 02:28:07 24 4
gpt4 key购买 nike

我不明白以下内容:

class Class {
public:
void operator=(string&&) {
cout << "here";
}
};

string func() {
return "Paul";
}

int main()
{
string&& rvalueref = func();

Class obj;
obj = rvalueref; <- error! Why isn't rvalueref a rvalue ref anymore?

return 0;
}

因为我可以将纯右值绑定(bind)到右值引用,所以我想我也可以传递它。为什么上面的失败了?

最佳答案

我相信std::move是你想要使用的。 (在 <utility> 中定义)
这样您就可以将左值转换为右值。

//...
int main()
{
string&& rvalueref = func();

Class obj;
obj = std::move(rvalueref);

return 0;
}

如果您想阅读更多相关信息,可以找到有关移动语义和右值引用的信息 here

关于c++ - 右值引用失去了它的本质,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29832668/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com