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

C++对于“真假表达式”采用所谓的骤死式评估方式。意思是一单该表达式的真假值确定,即使表达式中还有部分尚未检验,整个评估工作仍高结束。举例:
char *p;
...
if((p != 0) && (strlen(p) > 10))

你无需担心调用strlen时p是否为null指针,因为如果"p是否为0"的测试结果是否定的,strlen就绝不会被调用。同样道理,以下代码
int rangeCheck(int index)
{
if((index < lowerBound) || (index > upperBound))...
...
}

如果index小于lowerBound,它就绝对不会被拿来和upperBound比较。
如果你为自定义类重载&&和||操作符,你将从根本层面改变整个游戏规则,因为从此“函数调用语义”会取代“骤死式语义”。
if(expression1 && e

More Effective C++ 条款07:千万不要重载&&,和,操作符最先出现在Python成神之路

版权声明:
作者:siwei
链接:https://www.techfm.club/p/24841.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>