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