【发布时间】:2010-10-14 08:54:07
【问题描述】:
您是否见过任何重载布尔运算符(据说是邪恶的)的库/代码?以及它给用户带来了什么好处?
【问题讨论】:
标签: c++ operator-overloading boolean
您是否见过任何重载布尔运算符(据说是邪恶的)的库/代码?以及它给用户带来了什么好处?
【问题讨论】:
标签: c++ operator-overloading boolean
很好的文章描述了为什么要小心操作符 bool
http://www.artima.com/cppsource/safebool.html
boost 有操作符重载的助手
重载此运算符时应谨慎行事。 例如something::operator != 应该和 !某事::操作员 ==
【讨论】:
我不知道有没有人做过,但是|| ORACLE SQL 将其用作字符串连接。见这里:
http://www.java2s.com/Code/Oracle/Char-Functions/StringStringconcatenatestwostrings.htm
所以,如果你想在 C++ 中创建一个模仿 Oracle SQL 并具有 SQLString 类的库,我猜想使用 || for 连接将被认为是正常的。
【讨论】:
重载布尔运算符非常有用 - 当您希望您的类型能够表现得像布尔值时。
与任何其他语言功能一样,它既有优点也有缺点。
【讨论】:
标准库本身为输入流重载了 operator !,所以也许“邪恶”有点强?
但我怀疑你说的是 && 和 ||。不重载这些的原因是它们的短路能力不能在用户定义的重载中复制,而且我不知道有任何库重载它们。
【讨论】: