Distruttore (informatica): differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
→Collegamenti esterni: Creato la sezione e aggiunto il template "FOLDOC" |
m →Linguaggi garbage collected: Eliminato una d cacofonica |
||
(3 versioni intermedie di 2 utenti non mostrate) | |||
Riga 5:
== 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 (informatica)|costruttore]], non può accettare nessun tipo di parametro, perché se non chiamato esplicitamente, sarà il compilatore a inserire a fine programma la chiamata al distruttore. Per questo motivo, per ogni classe può esserci un solo distruttore, rendendo impossibile l'''[[overloading]]''.
<syntaxhighlight lang="cpp" line="1">▼
▲<syntaxhighlight lang="cpp">
class A {int i;
~A() {}
Riga 24 ⟶ 23:
</syntaxhighlight>
compila perfettamente ma impedisce che un oggetto di classe A venga istanziato sullo stack ma consente che venga
Esempio:
<syntaxhighlight lang="cpp" line="1">
class A {int i;
static int count;
Riga 44 ⟶ 43:
=== Linguaggi ''garbage collected'' ===
Nei linguaggi che mettono a disposizione un ''[[
== Linguaggi di programmazione ==
===
In C++ l'implementazione esplicita del distruttore è solitamente necessaria nell'implementazione di classi che gestiscono risorse. In accordo alla [[regola del tre (C++)|regola del tre]], solitamente l'implementazione del distruttore è accompagnata dall'implementazione di un [[costruttore di copia]] e di un [[operatore di assegnamento]].
<syntaxhighlight lang="cpp" line="1">
class Point
{
Riga 64 ⟶ 63:
</syntaxhighlight>
===
<syntaxhighlight lang="csharp" line="1">
public class Punto
{
Riga 77 ⟶ 76:
</syntaxhighlight>
===
====
Nella versione 4 (e precedenti) di PHP non esisteva il distruttore. Era presente una semplice gestione degli oggetti con l'uso dei [[Costruttore (informatica)|costruttori]].
====
Nella versione 5 il nome della funzione deve essere
<syntaxhighlight lang="php">
class Point
Riga 95 ⟶ 94:
</syntaxhighlight>
== Voci correlate ==
*[[Costruttore (informatica)|Costruttore]]
*[[Programmazione orientata agli oggetti]]
Riga 106 ⟶ 105:
[[Categoria:Programmazione]]
[[Categoria:Programmazione orientata agli oggetti]]
|