c++ - 在此示例中取消引用指针会创建一个拷贝吗?

标签 c++ qt dereference qpixmap

我正在尝试优化一些代码,因为我必须多次将相同的 QPixmap 绘制到更大的 QPixmap 上。由于在我自己的方法中按值传递 QPixmap 会在每次调用时创建拷贝,因此我认为我可以通过使用指向 QPixmap 的指针来节省一些时间。但是,我的工作似乎一直在进行中。我认为这是因为调用 QPainter::drawPixmap(..., const QPixmap&, ...) 创建了它的拷贝。

QPixmap *pixmap = new QPixmap(10,10);
painter.drawPixmap(0,0, *pixmap);

此示例中是否正在创建拷贝?

如果是这样,我该如何优化将许 multimap 像绘制到另一个图像上?

我已经在这里阅读了这个问答:Does dereferencing a pointer make a copy of it?但是对于我的具体情况,我没有一个明确的答案。

最佳答案

没有。 drawPixmap 函数采用 constpixmap 的引用,因此不会进行复制。这是 QPainter 成员函数的原型(prototype):

  void  drawPixmap ( int x, int y, const QPixmap & pixmap )

关于c++ - 在此示例中取消引用指针会创建一个拷贝吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15215138/

相关文章:

c++ - 由于 Linux C++ PowerPC 上的 SIGABRT 导致崩溃

c++ - 在 C++ 中从字符串 vector 中删除一个字符

c++ - 如何将信号作为函数参数传递?

c++ - 非阻塞 worker - 中断文件复制

c++ - 取消引用字符串迭代器产生 int

c++ - 是否可以将 LLVM 位码文件读入 llvm::Module?

c++ - 什么是奇长循环,我如何知道我的图表中是否存在奇数循环?

c++ - Qt::如何降低 QSpinBox 中的文本

c++ - 在 C++ 中取消引用 char 指针的问题

c++ - C++ 中 object->function() 和 object.function() 的区别