В C ++ вы можете инициализировать переменную в операторе if, например так:
if (CThing* pThing = GetThing())
{
}
Почему можно считать это плохим или хорошим стилем? Каковы преимущества и недостатки?
Лично мне нравится этот стиль, потому что он ограничивает область действия переменной pThing, поэтому его нельзя использовать случайно, когда он равен NULL. Однако мне не нравится, что вы не можете сделать это:
if (CThing* pThing = GetThing() && pThing->IsReallySomeThing())
{
}
Если есть способ заставить вышеуказанное работать, пожалуйста, напишите. Но если это просто невозможно, я все равно хотел бы знать, почему.
Вопрос заимствован здесь, похожая тема, но PHP.