不要重载&& ||和,操作符

首先,我们来说一下为什么不要重载&&与||

&&与|| 具有骤死式语意。即(在第一个条件为真时 || 即为真,不会判断第二个条件)

假设你重载了&& 则当你调用的时候会出现这种情况

if(a1 && a2)//a1、a2是重载了&& 的类对象

则会变成这样

if(a1.operator &&(a2));//operator &&是成员函数

if(operator && (a1,a2));//operator &&是全局函数。

这已经变成了函数调用。

函数调用与骤死式有两点不同:

1.当函数调用动作完成,所有的参数必须全部评估完毕。即第一个条件是假,也得判断第二个条件。

2.c++没有明确规定函数参数的评估顺序。

这就会导致,你无法决定&&的左右两边谁会先判定。显然,这并不是我们需要的&&。

||与&&是一样的。

“,”操作符

,操作符是经常用的操作符.如:

for(int i=0,j=10;i<10;i++,j--);

{

...

}

如果重载了,会与上面情况一样,会变成调用函数,i++,j--也就变成了函数参数,你无法决定让哪一个参数先被评估。

所以,不要重载&& ||与,操作符。因为,你很难实现它本身的行为。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值