【发布时间】:2023-03-04 00:08:01
【问题描述】:
我正在尝试编写一种有效的方法来将图像(QImage - Qt5.3)分配给我的类的成员变量:
void ImageView::setImage(QImage&& image){
std::cout << &image << std::endl;
_image = image;
//_image = std::move(image);
std::cout << &_image << std::endl;
_imageAssigned = true;
updateResizedImage();
update();
}
我可以使用两行代码,第一行是_image = image;,第二行是_image = std::move(image);。现在我认为第一行应该很好,实际上应该使用 QImage 的 =operator 重载,它采用右值引用,因为 image 已经是一个右值引用。但是,Visual Studio 的工具提示显示使用了普通的 = 运算符。如果我改用第二行,工具提示会显示使用右值的重载。现在我的问题是为什么会这样。第一行还不够吗?对已经是右值引用的变量调用 move 对我来说似乎是多余的。
我尝试通过输出指针来测试自己(如代码中所示)。现在,无论我使用哪条线,指针都是不同的。这让我感到困惑。看起来,我的代码并没有像我想象的那样工作。谁能告诉我我做错了什么?
感谢您的帮助
【问题讨论】:
标签: c++ visual-studio qt rvalue-reference