Другие уже указали ответ (т.е. "да").
Я отвечу, чтобы добавить пример одного идиоматического использования этого:
if ((p != NULL) && (*p == 42))
{
/* Do something */
}
Если бы не было короткого замыкания, это должно было бы быть написано гораздо более неуклюже.
Обратите внимание, что вы также можете использовать это в Perl-esque манере, например ::
someCondition && doSomething();
, поэтому doSomething()
вызывается, только если someCondition
равно true
. Но это компилируется, только если doSomething()
возвращает тип, который может быть преобразован в bool
, и это не считается идиоматическим C ++. (Обратите внимание, что этот метод не компилируется в C.)