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:
codice:
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
}
ovviamente in questo caso il placement new e il richiamare manualmente il distruttore non ha alcun senso, visto che basterebbe fare
codice:
void Funzione()
{
    UnaClasse c;
    // ...
}
e il distruttore verrebbe richiamato automaticamente. Tuttavia esistono dei casi in cui il placement new (e quindi il richiamare manualmente il distruttore) possono servire.