Pro / con: инициализация переменной в условном выражении - PullRequest
16 голосов
/ 26 сентября 2008

В C ++ вы можете инициализировать переменную в операторе if, например так:

if (CThing* pThing = GetThing())
{
}

Почему можно считать это плохим или хорошим стилем? Каковы преимущества и недостатки?

Лично мне нравится этот стиль, потому что он ограничивает область действия переменной pThing, поэтому его нельзя использовать случайно, когда он равен NULL. Однако мне не нравится, что вы не можете сделать это:

if (CThing* pThing = GetThing() && pThing->IsReallySomeThing())
{
}

Если есть способ заставить вышеуказанное работать, пожалуйста, напишите. Но если это просто невозможно, я все равно хотел бы знать, почему.

Вопрос заимствован здесь, похожая тема, но PHP.

Ответы [ 11 ]

0 голосов
/ 26 сентября 2008

Вы также можете заключить назначение в дополнительный набор () для предотвращения появления предупреждающего сообщения.

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