Duda: invocación de destructores en c++
Publicado por sxp (4 intervenciones) el 19/11/2008 19:13:31
Hola: leyendo el capítulo 6, sección 6.13 "Invocación de constructores y destructores" del libro
Cómo programar en C++ cuarta edición, de Deitel & Deitel, veo que:
"...Los constructores son llamados para objetos definidos con alcance global, antes de que cualquier
otra función (incluyendo a main) en ese archivo comience su ejecución (aunque el orden de la ejecución de constructores de objetos globales entre archivos no está garantizada) Los destructores correspondientes son llamados cuando main termina o cuando se llama a la función exit
Los destructores no son llamados para objetos globales, si el programa termina con una llamada a una función exit o a una abort..."
Y creo no logro interpretarlo correctamente.
No he estudiado aún las funciones exit y abort, pero lo estoy entendiendo (seguramente de manera erronea) como que hubiera una contradicción entre "los destructores correspondientes son llamados cuando main termina o cuando se llama a la función exit" y "los destructores no son llamados para objetos globales, si el programa termina con una llamada a una función exit o a una abort"
Y esta es mi duda. ¿O es que si la función exit se llama supongamos, en medio de un programa, se llama y si está al final de main no se llama?
Lo otro que me gustaría que me explicaran de otra forma que me sea más sencilla de entender es lo de los segundos paréntesis. ("aunque el orden..." "...está garantizada")
Bueno gracias de antemano y saludos.
Cómo programar en C++ cuarta edición, de Deitel & Deitel, veo que:
"...Los constructores son llamados para objetos definidos con alcance global, antes de que cualquier
otra función (incluyendo a main) en ese archivo comience su ejecución (aunque el orden de la ejecución de constructores de objetos globales entre archivos no está garantizada) Los destructores correspondientes son llamados cuando main termina o cuando se llama a la función exit
Los destructores no son llamados para objetos globales, si el programa termina con una llamada a una función exit o a una abort..."
Y creo no logro interpretarlo correctamente.
No he estudiado aún las funciones exit y abort, pero lo estoy entendiendo (seguramente de manera erronea) como que hubiera una contradicción entre "los destructores correspondientes son llamados cuando main termina o cuando se llama a la función exit" y "los destructores no son llamados para objetos globales, si el programa termina con una llamada a una función exit o a una abort"
Y esta es mi duda. ¿O es que si la función exit se llama supongamos, en medio de un programa, se llama y si está al final de main no se llama?
Lo otro que me gustaría que me explicaran de otra forma que me sea más sencilla de entender es lo de los segundos paréntesis. ("aunque el orden..." "...está garantizada")
Bueno gracias de antemano y saludos.
Valora esta pregunta


0