您是否曾见过任何重载布尔运算符的库/代码,据说这是邪恶的?它给用户带来了什么好处?
答案 0 :(得分:3)
标准库本身会为输入流重载 operator!,所以也许“邪恶”是一种强大的触摸?
但我怀疑你在谈论&& 和 || 。不重叠这些的原因是它们的短路能力不能在用户定义的重载中重复,并且我不知道任何重载它们的库。
答案 1 :(得分:2)
我不知道是否有人做过,但是||由 ORACLE SQL用作字符串连接。见这里:
http://www.java2s.com/Code/Oracle/Char-Functions/StringStringconcatenatestwostrings.htm
所以,如果你试图创建一个在C ++中模仿 Oracle SQL并且有一个SQLString类的库,我想使用||连接将被认为是正常的。
答案 2 :(得分:1)
重载布尔运算符非常有用 - 当您希望类型能够像布尔值一样运行时。
像任何其他语言特征一样,它具有优势和危险性。
答案 3 :(得分:1)
好文章描述了为什么要小心操作员bool
http://www.artima.com/cppsource/safebool.html
boost有操作符重载的助手
在重载此运算符时,您应该合乎逻辑。 例如something :: operator!=应该是一样的! something :: operator ==