短路评估是否在C ++中得到保证,就像在Java中一样?

在Java中,我使用

if (a != null && a.fun()); 

通过充分利用短路评估和表达从左到右进行评估?

在C ++中,我可以这样做吗? 它们是否保证可以跨不同平台和编译器移植?

 if (a != 0 && a->fun()); 

是的,保证“内置”类型。 但是,如果你重载&&或|| 对于您自己的类型,不执行短路评估。 出于这个原因,重载这些运算符被认为是一件坏事。

是。 &&和|| C和C ++中的短路; 它符合标准。

另请参阅: 是否要求短路逻辑运算符? 和评估顺序?