任何重载布尔运算符的库?

时间:2009-03-19 17:24:25

标签: c++ operator-overloading boolean

您是否曾见过任何重载布尔运算符的库/代码,据说这是邪恶的?它给用户带来了什么好处?

4 个答案:

答案 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 ==