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:
codice:
int* ptr = new int;
delete ptr;
delete ptr;
Genereresti un runtime error

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;