Condividi tramite


Distruttori (C++)

Le funzioni "distruttore" sono l'opposto di funzioni costruttore. Vengono richiamate quando gli oggetti vengono eliminati (rilasciati). Si Definisce una funzione come distruttore di classe anteponendo al nome della classe il carattere tilde (~). Ad esempio, il distruttore per la classe String viene dichiarato: ~String().

In una compilazione /clr, il distruttore ha un ruolo speciale nelle rilascio delle risorse gestite e delle risorse non gestite. Per ulteriori informazioni, vedere distruttori e finalizzatori in Visual C++.

Esempio

Il distruttore viene comunemente utilizzato per "pulire" quando un oggetto non è più necessario. Si consideri la dichiarazione seguente di una classe 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...");
}

Nell'esempio precedente, il distruttore String::~String utilizza l'operatore delete per liberare lo spazio allocato in modo dinamico per l'archiviazione di testo.

Vedere anche

Riferimenti

Funzioni membro speciali (C++)