Versione breve: si può ma non si deve.
---
Versione lunga: si può ma non ha nessun senso tranne in casi molto particolari, in genere quando si è usato il placement new per la costruzione:
ovviamente in questo caso il placement new e il richiamare manualmente il distruttore non ha alcun senso, visto che basterebbe farecodice:void Funzione() { char buffer[sizeof(UnaClasse)]; // Alloca manualmente la memoria per l'oggetto void* p = buffer; UnaClasse* c = new(p) UnaClasse(); // Chiama il placement new // ... c->~UnaClasse(); // Chiama manualmente il distruttore }
e il distruttore verrebbe richiamato automaticamente. Tuttavia esistono dei casi in cui il placement new (e quindi il richiamare manualmente il distruttore) possono servire.codice:void Funzione() { UnaClasse c; // ... }