逻辑操作符的陷阱

逻辑操作符的原生语义

操作数只有两种值 (true 和 false)

逻辑表达式不用完全计算就能确定最终值

最终结果只能是 true 或者 false

问题

逻辑操作符可以重载吗?

重载逻辑操作符有什么意义?

问题的本质

1、C++ 通过函数调用拓展操作符的功能

2、进入函数体前必须完成所有参数的计算

3、函数参数的计算次序是不定的

4、短路法则完全失效

操作符重载后无法完全实现原生的语义

一些有用的建议

实际工程开发中避免重载操作逻辑符

通过重载比较操作符代替逻辑操作符重载

直接使用成员函数代替逻辑操作符重载

使用全局函数对逻辑操作符进行重载

小结

C++ 从语法上支持逻辑操作符重载

重载后的逻辑操作符不满足短路法则

工程开发中不要重载逻辑操作符

通过重载比较操作符替换逻辑操作符重载

通过专用成员函数替换逻辑操作符重载

你可能感兴趣的:(C++,c++)