【问题标题】:Any library that overloaded boolean operators? [closed]任何重载布尔运算符的库? [关闭]
【发布时间】:2010-10-14 08:54:07
【问题描述】:

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

【问题讨论】:

    标签: c++ operator-overloading boolean


    【解决方案1】:

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

    boost 有操作符重载的助手

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 实际上,||运算符是 ANSI SQL 字符串连接运算符 - 它不是特定于 ORACLE。
      【解决方案3】:

      重载布尔运算符非常有用 - 当您希望您的类型能够表现得像布尔值时。
      与任何其他语言功能一样,它既有优点也有缺点。

      【讨论】:

      • 重载 && 和 || 的危险是您的版本不会像内置运算符版本那样短路。因此,许多编码标准和风格指南禁止重载 && 和 ||。
      【解决方案4】:

      标准库本身为输入流重载了 operator !,所以也许“邪恶”有点强?

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-23
        • 1970-01-01
        • 1970-01-01
        • 2012-12-21
        • 1970-01-01
        • 1970-01-01
        • 2015-01-07
        • 1970-01-01
        相关资源
        最近更新 更多