为了账号安全,请及时绑定邮箱和手机立即绑定

和Java中一样,是否可以保证C ++中的短路评估?

和Java中一样,是否可以保证C ++中的短路评估?

慕勒3428872 2019-10-12 10:35:47
在Java中,我使用if (a != null && a.fun());通过充分利用短路评估和表达式从左到右进行评估?在C ++中,我可以这样做吗?它们是否保证可跨不同平台和编译器移植?if (a != 0 && a->fun());
查看完整描述

3 回答

?
墨色风雨

TA贡献1853条经验 获得超6个赞

是的,对于“内置”类型可以保证。但是,如果您重载&&或|| 对于您自己的类型,不执行短路评估。因此,重载这些运算符被认为是不好的事情。


查看完整回答
反对 回复 2019-10-12
?
潇湘沐

TA贡献1816条经验 获得超6个赞

是。&&和|| C和C ++中的短路;它是由标准保证的。

查看完整回答
反对 回复 2019-10-12
?
月关宝盒

TA贡献1772条经验 获得超5个赞

我不是说这是疯狂的禁止操作符重载。我说这是疯狂的,禁止其出于这个原因,这既容易克服,并远高于其他合理原因不太显著。夸张地说,在C ++中,您不能信任任何东西-但是,您必须谨慎对待自己的期望。Java程序员在C ++中大多数“不可预测的”事情甚至根本不会在Java或C中进行编译。分配/转换是真正的尴尬。我从来没有对看到将两个对象添加到一起感到恐慌,但是我很欣赏它并不疯狂。

查看完整回答
反对 回复 2019-10-12
  • 3 回答
  • 0 关注
  • 485 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信