ITEM7不要重载“&&”“||”或“,”

不要重载“&&”“||”或“,”

原则

重载操作符时要保证重载前后行为特性一致;

不可重载的操作符

. .* :: ?: new delete sizeof typeid static_cast dynamic_cast const_cast reinterpret_cast

可以重载的操作符
operator new operator delete
operator new[] operator delete[]
+ - * / % ^ & | ~
! = < > += -= *= /= %=
^= &= |= << >> >>= <<= == !=
<= >= && || ++ -- , ->* ->
() []

问题:

  1. 二元操作符重载后,二元即为重载后函数的两个入参。C/C++没有规定函数多个参数的求值顺序。故带有求值顺序的多元操作符,在重载后其结果正确性将得不到保证。
  2. 其中&& ||等含有短路运算的操作符,因编译器无法保证短路运算,易产生非预期结果;“,”操作符的求值顺序为从左到右,整个逗号表达式的值为最后一次计算的值;重载后的“,”也无法保证求值顺序,导致结果非预期。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值