Ciao a tutti!
Mi ritrovo con un piccolo problema di natura più concettuale che pratica che riguarda i metodi distruttori relativamente al linguaggio C++; purtroppo studio il C++ da poco più di 3 mesi e in maniera "discontinua" - causa studio di tante altre cose - e a volte finisco col farmi venire dei dubbi apparentemente banali.
La mia domanda essenzialmente è: qual è, di preciso, lo scopo di un metodo distruttore all'interno di una classe?
Mi spiego meglio.
Da quello che so, un distruttore è un particolare metodo di una classe che occorre quando bisogna compiere delle operazioni esplicite per la distruzione di un oggetto come la deallocazione della memoria precedentemente allocata per un particolare campo dell'oggetto o la chiusura di uno stream aperto. Ma quello che mi chiedo è: a parte le istruzioni che vengono scritte esplicitamente nel corpo del distruttore stesso, questo esegue anche delle operazioni predefinite stabilite magari dallo standard del linguaggio?
In estrema sintesi, avrebbe senso dichiarare (e definire) un distruttore - in una classe - esattamente come questo:
o sarebbe inutile?codice:~nome_classe() { };
Nella fattispecie del mio problema, io ho implementato una classe per costruire un albero binario (per l'algoritmo di Huffman) che ha questi attributi (la classe si chiama "Nodo" e "Byte" è un carattere senza segno):
e ho definito un metodo dal nome pittoresco "distruggiAlbero()" col quale dealloco ricorsivamente lo spazio in memoria allocato per tutti i puntatori ai figli dei vari nodi dell'albero (figlio_sx e figlio_dx), dalle foglie alla radice.codice:unsigned int peso; Byte valore; Nodo * figlio_sx; Nodo * figlio_dx;
Avendo definito questo metodo, mi serve a qualcosa definire anche un distruttore standard come quello che ho scritto prima?
Scusate se mi sono dilungato ma volevo essere quanto più chiaro possibile (e spero di esserci riuscito!)