鱼C论坛

 找回密码
 立即注册
查看: 1967|回复: 7

[已解决]关于struct中重载运算符的问题

[复制链接]
发表于 2022-8-13 12:42:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在使用operator重载==、>=、<=、<、>等运算符的时候,向这个重载函数传递的参数是const 类型 变量名,但是在重载+、-等运算符的时候,向他传递的参数是这个参数的引用,请问为什么要这样写
最佳答案
2022-8-15 19:31:13
使用引用:
[name] operator+(const [name] &a){}
会相对不用
[name] operator+(const [name] a){}
要快,因为不用引用会将所有参数备份一遍在调用,当struct很大的时候,那就很慢了
比如 对500000个192字节的结构体来一遍sort排序
比较函数加加引用(bool cmp(const test &a,const test &b))用时286毫秒(因配置而异)
不加引用用时513毫秒,当结构体还大一些还会更慢
所以,函数加上引用是一个很好的习惯
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-8-13 13:37:06 From FishC Mobile | 显示全部楼层
       你在说什么,莫名其妙,举个例子啊!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-8-13 14:08:09 | 显示全部楼层
jackz007 发表于 2022-8-13 13:37
你在说什么,莫名其妙,举个例子啊!

就是上面那个参数为什么要写const number other,下面那个为什么要写number& other
屏幕截图 2022-08-13 140642.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-13 16:41:42 | 显示全部楼层
不大合理,习惯做法是二元和比较运算符传递的参数类型都是const xxx &类型的。
这里比较运算符传值还可以理解,毕竟这个struct不大。后面传左值引用就没法理解了,这样反而无法兼容右值参数。
这代码是谁写的?感觉不是很值得学习的样子。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-13 16:42:56 | 显示全部楼层
正常情况下不应该啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-8-13 18:37:20 | 显示全部楼层
lhgzbxhz 发表于 2022-8-13 16:41
不大合理,习惯做法是二元和比较运算符传递的参数类型都是const xxx &类型的。
这里比较运算符传值还可以 ...

就是这个都应该是从const xxx &吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-8-13 18:39:16 | 显示全部楼层
lhgzbxhz 发表于 2022-8-13 16:41
不大合理,习惯做法是二元和比较运算符传递的参数类型都是const xxx &类型的。
这里比较运算符传值还可以 ...

我自己按网上找的重载运算符方法写的一个练习的代码,已经是最简单了,只有一个成员
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-15 19:31:13 | 显示全部楼层    本楼为最佳答案   
使用引用:
[name] operator+(const [name] &a){}
会相对不用
[name] operator+(const [name] a){}
要快,因为不用引用会将所有参数备份一遍在调用,当struct很大的时候,那就很慢了
比如 对500000个192字节的结构体来一遍sort排序
比较函数加加引用(bool cmp(const test &a,const test &b))用时286毫秒(因配置而异)
不加引用用时513毫秒,当结构体还大一些还会更慢
所以,函数加上引用是一个很好的习惯
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 01:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表