En C++ se puede inicializar una variable en una sentencia if, así:Pro/acondicionado: La inicialización de una variable en una instrucción condicional
if (CThing* pThing = GetThing())
{
}
¿Por qué uno considere esto bueno o malo el estilo? ¿Cuáles son los beneficios y desventajas?
Personalmente, me gusta este estilo porque limita el alcance de la variable pThing, por lo que nunca se puede usar accidentalmente cuando es NULL. Sin embargo, no me gusta que no se puede hacer esto:
if (CThing* pThing = GetThing() && pThing->IsReallySomeThing())
{
}
Si hay una manera de hacer el trabajo anterior, por favor enviar. Pero si eso no es posible, me gustaría saber por qué.
Question borrowed from here, similar topic but PHP.
"(A * a = new A) && a-> test()" Esto no es C++ estándar. (-1) –
Aceptaré esta respuesta por la verbosidad técnica. La discusión sobre cuál es mejor es de hecho altamente subjetiva, prefiero el estilo de mi publicación inicial, pero mi DT no quiere que lo use, así que no lo hago. Siempre puedo usar un par de corchetes adicionales para limitar el alcance como un compromiso. – steffenj