首页| 论坛| 消息

标题:关于函数返回类和类指针的不同
作者:zhaoxg
日期:2021-12-30 22:37
内容:

看了网上的许多代码,在处理返回数据时返回的是类,而不是类指针,
比如QImage这样的几十上百兆类,不知道返回类和类指针哪个效率更好些那?
比如很多OPENCV mat2Image 的代码都是返回的QImage.这样是不是会在栈上分配对象啊,是不是比在堆上分配返回指针效率低呢?


#1 [875603096 12-31 09:32]
编译器会进行返回值优化的,可以百度一下RVO(return value optimization)
#2 [lemonzll 12-31 11:10]
正常肯定是返回类指针效率好的,Qt里面很多时候返回两种都可以,是因为大量用了d-pointer,比如qimage,里面实际就存了个qimagedata的类的指针,数据在类指针指向的对象里面存着的,所以你返回qimage或者qimage的指针都差不多,用指针容易出错,所以直接返回类好一点。你可以试下sizeof下qimage的对象看下,不管多大的图片sizeof的值都一样的
#3 [snow_man_0 01-01 10:41]
Qt的类多数都使用了引用计数和copy-on-write,qimage使用值传递和指针传递都可以,效率是一样的

回复 发表
主题 版块