virtual деструктор

Просто всегда объявляйте виртуальный деструктор для абстрактных классов.

Достаточно объявить только у базового абстрактного класса, у потомков уже объявлять не обязательно.