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

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

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

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

3 回答

?
料青山看我应如是

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

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

查看完整回答
反对 回复 2019-11-04
?
呼唤远方

TA贡献1856条经验 获得超11个赞

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

查看完整回答
反对 回复 2019-11-04
?
catspeake

TA贡献1111条经验 获得超0个赞

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

查看完整回答
反对 回复 2019-11-04
  • 3 回答
  • 0 关注
  • 239 浏览

添加回答

举报

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