Quote Originally Posted by OReubens View Post
Hmm not quite...
If the derived class does not have additional datamembers, and doesn't do anything to existing datamembers (or globals) that need to be reversed, then the derived class doesn't need a destructor at all.

I'm not sure if this is 100% "by the book", but the above rule works for every single c++ compiler (even some very oddball ones) on every single platform tested so far.
That assumes that the designer of the base class knows the implementations of the classes that will be derived from it, and that's a bad assumption to make. There's no reason not to make a destructor virtual.