逻辑操作符的陷阱
一,逻辑运算符的原生语义
(一)操作数只有两种值(true和false)
(二)逻辑表达式不用完全计算就能确定最终值
(三)最终结果只能是true或者false
二,本质分析
(一)C++通过函数调用扩展操作符的功能
(二)进入函数体前必须完成所有参数的计算
(三)函数参数的计算次序是不定的
(四)短路法则完全失效
三,一些有用的建议
(一)实际工程开发中避免重载逻辑操作符
(二)通过重载比较操作符代替逻辑操作符重载
(三)直接使用成员函数代替逻辑操作符重载
(四)使用全局函数对逻辑操作符进行重载
四,小结
(一)C++从语法上支持逻辑操作符重载
(二)重载后的逻辑操作符不满足短路法则
(三)工程开发中不要重载逻辑操作符
(四)通过重载比较操作符替换逻辑操作符重载
(五)通过专用成员函数替换逻辑操作符重载