找回密码
 立即注册
收起左侧

请教,QT的接口中,有些入参 带了个 & 符号,请问表示什.....

8
回复
8937
查看
[复制链接]
累计签到:11 天
连续签到:1 天
来源: 2015-1-23 17:11:32 显示全部楼层 |阅读模式
4Qter豆
如题。例如:
QString &        append ( const QString & str );
其返回值类型的 & 和 入参中的& 各表示什么意思?

最佳答案

查看完整内容

这个就是性能上的问题了,对于传进去的参数不会改变,最好加一个const, 而使用引用不是直接使用QString str,则是性能的问题,使用QString str的方式,会发生一次拷贝赋值,这会降低函数的性能。。。
回复

使用道具 举报

累计签到:882 天
连续签到:3 天
2015-1-23 17:11:33 显示全部楼层
这个就是性能上的问题了,对于传进去的参数不会改变,最好加一个const, 而使用引用不是直接使用QString str,则是性能的问题,使用QString str的方式,会发生一次拷贝赋值,这会降低函数的性能。。。
回复

使用道具 举报

累计签到:882 天
连续签到:3 天
2015-1-23 17:29:12 显示全部楼层
都是引用啊 你传进去一个字符串 他给你生成一个新的字符串
回复

使用道具 举报

累计签到:11 天
连续签到:1 天
2015-1-24 08:37:27 显示全部楼层
如果是重新生成一个新的字符串,那加不加 & 应该也是一样的吧。
比如: QString &        append ( QString  str ); 我传一个 QString 进去,它也会在自己的栈上生成一个字符串吧?
回复

使用道具 举报

累计签到:595 天
连续签到:1 天
2015-1-24 08:53:00 显示全部楼层
用法上都可以,但是对CPU来说有点类似去逛个商店,一个走直线过去500米,一个绕一个大圈过去10000米。
回复

使用道具 举报

累计签到:11 天
连续签到:1 天
2015-1-26 11:37:23 显示全部楼层
“而使用引用不是直接使用QString str,则是性能的问题,使用QString str的方式,会发生一次拷贝赋值”------你的意思是, 使用了 加 & 的方式来传参数,没有拷贝的动作。也就是 append 函数是不会在它自己是栈上生成一个字符串的? 这跟实际上相当于传入一个指向 QString 的指针了。
回复

使用道具 举报

累计签到:882 天
连续签到:3 天
2015-1-31 16:47:51 显示全部楼层
我没有深入研究过引用的本质,但是依据教科书的说法,引用其实就是一个别名,对引用的操作就是对被引用变量本身的操作,从结果上看他是有指针的影子的,但是应该并不是传入一个指针,楼主可以去查查资料
回复

使用道具 举报

累计签到:11 天
连续签到:1 天
2015-7-20 15:06:13 显示全部楼层
一叶知秋 发表于 2015-1-31 16:47
我没有深入研究过引用的本质,但是依据教科书的说法,引用其实就是一个别名,对引用的操作就是对被引用变量 ...

下面这个链接解释得相当到位和清晰:
http://blog.csdn.net/dujiangyan101/article/details/2844138
回复

使用道具 举报

累计签到:882 天
连续签到:3 天
2015-7-20 15:18:24 显示全部楼层
嗯,写的不错。。。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了