Every class with a virtual function should have a virtual destructor, even if it's empty.