Возможно, если вся ваша иерархия классов - POD или у деструкторов нет ничего для вас, может обойтись без виртуального деструктора. Однако, как только вы захотите извлечь другие классы из вашего класса и захотите использовать их полиморфно с помощью указателя / ссылки на базу, у вас все равно появятся виртуальные функции, так что добавление виртуальных ресурсов будет небольшим деструктор, и ты никогда не знаешь, кто будет наследовать от тебя. Как только любому производному классу требуется нетривиальный деструктор , и на можно ссылаться через указатель на базу, вы должны иметь виртуальный деструктор.
Основное правило: если у вас есть какие-либо виртуальные функции, добавьте виртуальный деструктор.
(Дело в том, что если у вас есть нет виртуальных функций, то не будет возможности использовать производные классы полиморфно, поэтому менее вероятно, что незаконный дочерний класс, который требует нетривиальных уничтожение будет удалено с помощью указателя на базовый класс. Это все еще можно сделать, просто это менее вероятно.)