¿Qué es un destructor?
Destructor es una función miembro de instancia que se invoca automáticamente cada vez que se va a destruir un objeto. Es decir, un destructor es la última función que se llamará antes de que se destruya un objeto.
- Destructor es también una función miembro especial como constructor. Destructor destruye los objetos de clase creados por el constructor.
- Destructor tiene el mismo nombre que el nombre de su clase precedido por un símbolo de mosaico (~).
- No es posible definir más de un destructor.
- El destructor es solo una forma de destruir el objeto creado por el constructor. Por lo tanto, destructor no puede sobrecargarse.
- Destructor no requiere ningún argumento ni devuelve ningún valor.
- Se llama automáticamente cuando el objeto sale del alcance.
- El destructor libera el espacio de memoria ocupado por los objetos creados por el constructor.
- En destructor, los objetos se destruyen al revés de la creación de un objeto.
El asunto debe tenerse en cuenta aquí, si el objeto se crea usando new o el constructor usa new para asignar memoria que reside en la memoria del montón o en la tienda libre, el destructor debe usar delete para liberar la memoria.
C++
// Example: #include<iostream> using namespace std; class Test { public: Test() { cout<<"\n Constructor executed"; } ~Test() { cout<<"\n Destructor executed"; } }; main() { Test t; return 0; }
C++
// Example: #include<iostream> using namespace std; class Test { public: Test() { cout<<"\n Constructor executed"; } ~Test() { cout<<"\n Destructor executed"; } }; main() { Test t,t1,t2,t3; return 0; }
C++
// Example: #include<iostream> using namespace std; int count=0; class Test { public: Test() { count++; cout<<"\n No. of Object created:\t"<<count; } ~Test() { cout<<"\n No. of Object destroyed:\t"<<count; --count; } }; main() { Test t,t1,t2,t3; return 0; }
CPP
class String { private: char* s; int size; public: String(char*); // constructor ~String(); // destructor }; String::String(char* c) { size = strlen(c); s = new char[size + 1]; strcpy(s, c); } String::~String() { delete[] s; }
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