Il distruttore viene richiamato quando la classe viene distrutta, se scrivi delete this nel distruttore fai un errore, perché:
- se questa istanza è stata allocata sullo stack (o come campo all'interno di un'altra struttura/classe), stai chiamando delete su una cosa che non è stata allocata con new;
- se questa istanza è stata allocata con new, tenti di deallocare due volte la stessa cosa.
Ricorda: nel distruttore ti occupi di operazioni di cleanup relative alla tua classe e ai suoi membri, ma non di deallocare la memoria occupata dall'istanza corrente "in sé" - quella è un'operazione che viene effettuata automaticamente nel momento in cui un oggetto viene distrutto.

Rispondi quotando