Distruttore (informatica): differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
Riga 7:
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 collection|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 (linguaggio)|Java]] e la versione 2 di [[Objective-C]].
== Linguaggi di programmazione ==
=== [[C++]] ===
<source lang="cpp">
class Point
{
public:
Point(); // Costruttore di default
~Point(); // Distruttore
// ... altri metodi ...
private:
int x;
int y;
}
</source>
[[Categoria:Programmazione ad oggetti]]
|