I distruttori non sono altro che metodi chiamati subito prima della distruzione di un oggetto ... Se tu non definisci un distruttore in una classe, il compilatore lo farà al posto tuo col corpo vuoto. I distruttori servono soprattutto quando uno dei membri della classe è un puntatore. In caso che, durante la vita dell' oggetto, venga allocata memoria tramita il puntatore, è compito del distruttore assicurare che alla distruzione dell' oggetto venga deallocata la memoria (ovviamente in questo caso è compito del programmatore implementare correttamente il distruttore). Ad esempio nel tuo caso, ti consiglierei di sostituire il metodo distruggiAlbero() con il distruttore (o al limite fare in modo che il distruttore richiami distruggiAlbero() ) . . . Perchè se ti dimentichi di richiamare il metodo distruggiAlbero() ed il tuo oggetto esce dal suo scope (e quindi, a meno che non sia statico , viene distrutto), l' oggetto in se stesso viene distrutto ma incorri in un errore di memory leak . . . Spero di essere stato chiaro . . . Ciao