More Effective C++ 条款7 千万不要重载&&,||和,操作符

1. 内置的&&和||操作符有"短路求值"的特性。对于&&如果第一个操作数为真,那么&&即返回为真,不再对第二个操作数进行求值,||则相反,利用这个特性可以写出下面的代码:

char *p;
...
if(p>0&&strlen(p)>10)
...
View Code

一旦进行重载,&&和||的左右操作数就是两个无分前后的参数而已,也就是说短路求值的特性没有了当函数被调用时,所有参数都被求值并传入而C++没有规定个参数的求职顺序,之前的代码就不能用了。

2. 对于内置的逗号操作符,从左向右对各个操作数求值,最后返回最右边的操作数(可以多个逗号)连用

一旦进行重载,从左至右依次求值的特性也会消失(就算重载为成员函数也是一样)。

3. 不能被重载的操作符:

    .                       .*                       ::                        ?:    

    new                  delete                 sizeof                   typeid

    static_cast         dynamic_cast      const_cast            reinterpret_cast

转载于:https://www.cnblogs.com/reasno/p/4601460.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值