2013-07-20 47 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