Compartir a través de


Destructores (C++)

Las funciones de "destructor" son lo contrario de las funciones de constructor. Se les llama cuando se destruyen (desasignan) objetos. Para designar una función como el destructor de una clase, se debe preceder el nombre de la clase con una tilde (~). Por ejemplo, el destructor de la clase String se declara como: ~String().

En una compilación /clr, el destructor tiene un rol especial en la liberación de recursos administrados y no administrados. Vea Destructores y Finalizadores en Visual C++ para obtener más información.

Ejemplo

El destructor se suele utilizar para "limpiar" cuando un objeto ya no es necesario. Considere la siguiente declaración de una clase String:

// spec1_destructors.cpp
#include <string.h>

class String {
public:
   String( char *ch );  // Declare constructor
   ~String();           //  and destructor.
private:
   char    *_text;
   size_t  sizeOfText;
};

// Define the constructor.
String::String( char *ch ) {
   sizeOfText = strlen( ch ) + 1;

   // Dynamically allocate the correct amount of memory.
   _text = new char[ sizeOfText ];

   // If the allocation succeeds, copy the initialization string.
   if( _text )
      strcpy_s( _text, sizeOfText, ch );
}

// Define the destructor.
String::~String() {
   // Deallocate the memory that was previously reserved
   //  for this string.
   if (_text)
      delete[] _text;
}

int main() {
   String str("The piper in the glen...");
}

En el ejemplo anterior, el destructor String::~String utiliza el operador delete para desasignar el espacio asignado dinámicamente para el almacenamiento de texto.

Vea también

Referencia

Funciones miembro especiales (C++)