1

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

4

4 回答 4

3

标准库本身重载operator !对于输入流,也许“邪恶”有点强?

但我怀疑你在谈论&&|| . 不重载这些的原因是它们的短路能力不能在用户定义的重载中复制,而且我不知道有任何库重载它们。

于 2009-03-19T17:28:25.067 回答
2

不知道有没有人做过,但是|| ORACLE SQL 将其用作字符串连接。看这里:

http://www.java2s.com/Code/Oracle/Char-Functions/StringStringconcatenatestwostrings.htm

所以,如果你想创建一个在 C++ 中模仿Oracle SQL 并且有一个 SQLString 类的库,我猜想使用 || for 连接将被认为是正常的。

于 2009-03-19T17:28:17.937 回答
1

重载布尔运算符正是为此有用 - 当您希望您的类型能够像布尔值一样表现时。
像任何其他语言功能一样,它既有优点也有危险。

于 2009-03-19T17:32:06.367 回答
1

很好的文章,描述了为什么要小心操作员 bool
http://www.artima.com/cppsource/safebool.html

boost 有操作符重载的助手

重载此运算符时,您应该谨慎行事。例如 something::operator != 应该和 ! 某事::操作员 ==

于 2009-03-19T17:42:40.087 回答