tutorial switch gotoxy c++ goto

switch - if c++



¿Son compatibles los goto y los destructores? (1)

Este código conduce a un comportamiento indefinido:

void some_func() { goto undefined; { T x = T(); undefined: } }

El constructor no es llamado.

Pero, ¿y este código? Se llamará al destructor de x? Creo que será, pero quiero estar seguro. :)

void some_func() { { T x = T(); goto out; } out: }


Sí, se invocarán los destructores como se esperaba, lo mismo que si se saliera del alcance antes de tiempo debido a una excepción.

Estándar 6.6 / 2 (Declaraciones de salto):

Al salir del alcance (independientemente de cómo se realice), se invocan destructores para todos los objetos construidos con duración de almacenamiento automático que se declaran en ese ámbito, en el orden inverso al de su declaración.