2013-07-20 52 views
3

阅读三元运算符的文件,我已经意识到,有一些我从来没有使用两种特殊情况:bool ? void : void 返回投掷三元运算符?

  • 可以抛出:

    • 你可以用返回void函数使用它一个三元运算

    所以是内部以下有效,完全定义的,并且用于oftenly(假设这是一个类的成员,类拥有Type _data[Size])?

    Type& at(const unsigned int i) 
    { 
        return (i < Size) ? (_data[i]) : (throw std::out_of_range("ERROR")); 
    } 
    
  • +0

    (也可能会帮助你知道这个操作符被称为“条件操作符”,它只是“三元”,就像'+'是二进制的一样,等等) – Dave

    +0

    'throw' in condition operator常用于C++ 11'constexpr'编程 – Cubbi

    回答

    5

    你的实例是有效的和明确的(假设的Size_data合适定义)。至于“经常使用” - 我个人从未见过这样的构造,因为它是值得的。

    +0

    +1有效,定义明确,但几乎从未使用过。如果你想抛出,使用一个好的旧的'如果'为了可读性。这只是一个风格问题,所以YMMV。如果每个人和他们的狗在看到这个构造时都会对你大喊大叫,不要感到惊讶。 – syam