&&
および||
などの演算子によっては、短絡の評価が行われます。また、引数を指定して関数を呼び出すと、その関数を呼び出す前にすべての引数が構築されます。例えばユーザー定義関数で短絡評価を実装する方法は?
、私は
if(f3(f2(),f1()))//Do something
を呼び出す場合f3
が呼び出される前に、次にf2
とf1
両方の戻り値が評価され、以下の三つの機能
bool f1();
bool f2();
bool f3(bool, bool);
を取ります。 f2
がtrueと評価された場合、私が使用した場合しかしは、(通常の)operator||
の代わりf3
、上記のコードは
if(f2()||f1())//Do something
とf1
に相当するであろうよりも評価されません。
f3
(2つのブール値をとるユーザー定義関数)は同じように動作しますか?そうでない場合、operator||
は何のために特別なものになるのでしょうか?
インラインならば可能でしょうか...そうでなければ、絶対にありません。 –