En C++, ¿cuál es la diferencia entre exit(0) y return 0 ?
Cuando se usa exit(0) para salir del programa, no se llama a los destructores para objetos no estáticos de ámbito local. Pero se llama a los destructores si se usa return 0.
Programa 1 – – usa exit(0) para salir
#include<iostream> #include<stdio.h> #include<stdlib.h> using namespace std; class Test { public: Test() { printf("Inside Test's Constructor\n"); } ~Test(){ printf("Inside Test's Destructor"); getchar(); } }; int main() { Test t1; // using exit(0) to exit from main exit(0); }
Salida:
Constructor de prueba interna
Programa 2: utiliza el retorno 0 para salir
#include<iostream> #include<stdio.h> #include<stdlib.h> using namespace std; class Test { public: Test() { printf("Inside Test's Constructor\n"); } ~Test(){ printf("Inside Test's Destructor"); } }; int main() { Test t1; // using return 0 to exit from main return 0; }
Salida:
Constructor de
prueba interna Destructor de prueba interna
Llamar a los destructores a veces es importante, por ejemplo, si el destructor tiene un código para liberar recursos como cerrar archivos.
Tenga en cuenta que los objetos estáticos se limpiarán incluso si llamamos a exit(). Por ejemplo, vea el siguiente programa.
#include<iostream> #include<stdio.h> #include<stdlib.h> using namespace std; class Test { public: Test() { printf("Inside Test's Constructor\n"); } ~Test(){ printf("Inside Test's Destructor"); getchar(); } }; int main() { static Test t1; // Note that t1 is static exit(0); }
Salida:
Constructor de
prueba interna Destructor de prueba interna
Contribución de indiarox . Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA