Ключевое слово virtual
означает что-то немного другое для деструкторов. Когда dtors базового класса являются виртуальными, это означает, что all dtors в иерархии наследования вызываются. Вы не можете переопределить это как таковое.
Обычно вы ожидаете, что он будет пустым:
class Rodent {
public:
virtual ~Rodent() {}
virtual void run() = 0;
virtual void squeak() = 0;
};
Я вижу очень небольшую разницу. Возможно, что из-за того, что пустое тело не используется, компилятор может игнорировать его через какой-либо статут языкового адвоката.
Не думаю, что вы кого-то смущаете, называя свое чисто виртуальным.