在Java中,我使用if (a != null && a.fun());通過充分利用短路評估和表達(dá)式從左到右進(jìn)行評估?在C ++中,我可以這樣做嗎?它們是否保證可跨不同平臺和編譯器移植?if (a != 0 && a->fun());
3 回答

料青山看我應(yīng)如是
TA貢獻(xiàn)1772條經(jīng)驗 獲得超8個贊
是的,對于“內(nèi)置”類型可以保證。但是,如果您重載&&或|| 對于您自己的類型,不執(zhí)行短路評估。因此,重載這些運算符被認(rèn)為是不好的事情。

catspeake
TA貢獻(xiàn)1111條經(jīng)驗 獲得超0個贊
我不是說這是瘋狂的禁止操作符重載。我說這是瘋狂的,禁止其出于這個原因,這既容易克服,并遠(yuǎn)高于其他合理原因不太顯著。夸張地說,在C ++中,您不能信任任何東西-但是,您必須謹(jǐn)慎對待自己的期望。Java程序員在C ++中大多數(shù)“不可預(yù)測的”事情甚至根本不會在Java或C中進(jìn)行編譯。分配/轉(zhuǎn)換是真正的尷尬。我從來沒有對看到將兩個對象添加到一起感到恐慌,但是我很欣賞它并不瘋狂。
添加回答
舉報
0/150
提交
取消