Non è compito della classe figlia, quello di deallocare le risorse gestite/allocate dalla classe padre.
delete non cancella ma dealloca... in particolare dopo aver deallocato non setta a null il puntatore, pertanto se tu facessi:
Genereresti un runtime errorcodice:int* ptr = new int; delete ptr; delete ptr;
http://www.cplusplus.com/reference/s...ator%20delete/
EDIT Il seguente codice non genera errore (perché delete su puntatore NULL non esegue nessuna operazione):
codice:int* ptr = new int; delete ptr; ptr = NULL; delete ptr;