• 1219阅读
  • 3回复

[讨论]关于函数返回类和类指针的不同 [复制链接]

上一主题 下一主题
在线zhaoxg
 

只看楼主 倒序阅读 楼主  发表于: 2021-12-30
看了网上的许多代码,在处理返回数据时返回的是类,而不是类指针
比如QImage这样的几十上百兆类,不知道返回类和类指针哪个效率更好些那?
比如很多OPENCV mat2Image 的代码都是返回的QImage.这样是不是会在栈上分配对象啊,是不是比在堆上分配返回指针效率低呢?
离线875603096

只看该作者 1楼 发表于: 2021-12-31
编译器会进行返回值优化的,可以百度一下RVO(return value optimization)
离线lemonzll

只看该作者 2楼 发表于: 2021-12-31
正常肯定是返回类指针效率好的,Qt里面很多时候返回两种都可以,是因为大量用了d-pointer,比如qimage,里面实际就存了个qimagedata的类的指针,数据在类指针指向的对象里面存着的,所以你返回qimage或者qimage的指针都差不多,用指针容易出错,所以直接返回类好一点。你可以试下sizeof下qimage的对象看下,不管多大的图片sizeof的值都一样的
在线snow_man_0

只看该作者 3楼 发表于: 2022-01-01
Qt的类多数都使用了引用计数和copy-on-write,qimage使用值传递和指针传递都可以,效率是一样的
快速回复
限100 字节
 
上一个 下一个