重载逻辑运算符被视为不良做法?

cpx*_*cpx 12 c++ operator-overloading operators logical-operators

重载&&,||是一个坏主意 或逗号运算符和为什么?

Fre*_*Foo 14

我不会超载operator&&operator||.即使你定义了一个产生布尔代数的类(例如有限集),它也可能是一个更好的选择来重载operator&operator|.

原因是C++程序员期望特殊语义operator&&operator||:它们是短路的,即如果没有必要则不评估它们的右手参数.您不能通过重载来获得此行为,因为您将定义一个函数.

operator,在例如Boost.Assign库中已经完成了重载.这也是我所知道的超载的唯一例子,我自己从未考虑过载.你最好有一个非常具体的用例,没有其他运算符适合.

  • @davka:关于布尔转换......不,不!请参阅http://www.artima.com/cppsource/safebool.html,主要问题是bool可以升级为整数.最好将转换运算符定义为指向成员函数的指针. (2认同)