Distruttore (informatica)
Nella programmazione orientata agli oggetti, un distruttore è un particolare metodo che viene invocato automaticamente quando l'oggetto viene distrutto. E' stato concepito per liberare le risorse utilizzate dall'oggetto, definite dalla sua classe e create dal corrispondente costruttore ed eventualmente le altre risorse allocate dinamicamente durante l'esecuzione dei metodi dell'oggetto stesso.
Uso
Nella creazione del codice di un distruttore occorre agire con particolare attenzione, in quanto per evitare fenomeni di memory leak si deve essere certi che tutte le strutture dati liberino correttamente la memoria da loro utilizzata compresa quella eventualmente utilizzata da altre strutture annidate al loro interno.
Il distruttore, a differenza del costruttore, non può accettare nessun tipo di parametro, perché se non chiamato esplicitamente, sarà il compilatore a inserire a fine programma la chiamata al costruttore. Per questo motivo, per ogni classe può esserci un solo distruttore, rendendo impossibile l'overloading.
E' obbligatorio che un distruttore sia dichiarato public
Linguaggi garbage collector
Nei linguaggi che mettono a disposizione un garbage collector, il distruttore è spesso inutile in quanto le risorse occupate da un oggetto vengono automaticamente liberate nel momento in cui non c'è più nessun riferimento all'oggetto stesso. In questi linguaggi è generalmente possibile utilizzare o definire ugualmente appositi metodi per ottenere il medesimo effetto, nei casi in cui si desideri disattivare il garbage collector, in quanto per alcuni task critici potrebbe risultare troppo inefficiente. Esempio di linguaggi di programmazione fra i più conosciuti ad utilizzare il meccanismo della garbage collection sono Java e la versione 2 di Objective-C.
Linguaggi di programmazione
class Point
{
public:
Point(); // Costruttore di default
~Point(); // Distruttore
// ... altri metodi ...
private:
int x;
int y;
}