Гарантируется ли оценка короткого замыкания в C ++, как в Java? - PullRequest
26 голосов
/ 21 января 2010

В Java я использую

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

, используя все преимущества оценки короткого замыкания и выражения оцениваются слева направо?

Могу ли я сделать то же самое в C ++? Они гарантированно переносимы на разные платформы и компиляторы?

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

Ответы [ 2 ]

38 голосов
/ 21 января 2010

Да, это гарантировано для «встроенных» типов. Однако, если вы перегружаете && или || для ваших собственных типов короткозамкнутая оценка НЕ ​​выполняется. По этой причине перегрузка этих операторов считается плохой вещью.

10 голосов
/ 21 января 2010

Да. && и || короткое замыкание в C и C ++; это гарантировано стандартом.

См. Также: Требуются ли логические операторы с коротким замыканием? А порядок оценки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...