If you use a virtual class, you must declare and define a virtual destructor for it. If you don't, the derived classes won't get their destructor called.
An empty block as destructor is good enough.