For most pure virtual functions, you'd be right. However, for a pure virtual destructor, it's actually important to define a corresponding destructor implementation:
- The "pure virtual" is to require derived classes to implement their destructor.
- Your base class destructor implementation is so that the derived class destructors can successfully "chain up" afterwards.