一些運營商如&&
和||
執行短路評估。另外,當使用參數調用函數時,所有參數都是在調用函數之前構造的。如何在用戶定義的函數中實現短路評估?
例如,採取以下三種功能
bool f1();
bool f2();
bool f3(bool, bool);
如果我叫
if(f3(f2(),f1()))//Do something
然後f3
調用之前都f2
和f1
的返回值進行評估。 但,如果我用了(常規)operator||
代替f3
,比上面的代碼就相當於
if(f2()||f1())//Do something
如果f2
計算結果爲真f1
將不進行評估。
我的問題是:是否有可能有f3
(用戶定義的函數採取兩個布爾值)的行爲方式相同?如果沒有,是什麼讓operator||
如此特別?
如果你內聯它可能是可能的......否則絕對不是。 – 2012-02-24 01:00:39