Why do we need Virtual Destructors?
When classes are inherited, we need to make the base class destructor virtual – to make sure when the object is destroyed, all the derived class destructors also called. Otherwise the derived class destructors are not called because the there is compile time binding of the destructor pointer to the base class destructor.
C++ FAQ Home