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

时间:2010-01-21 10:37:12

标签: java c++

在Java中,我使用

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

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

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

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

2 个答案:

答案 0 :(得分:38)

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

答案 1 :(得分:10)

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

另请参阅:Is short-circuiting logical operators mandated? And evaluation order?