...Alf, спасибо понял
а если всегда делать деструктор виртуальным? хуже от этого не будет?
Если есть вероятность, что класс в дальнейшем послужит базовым для другого класса, то весьма желательно сделать его деструктор виртуальным.
Виртуальность деструктора приведет к весьма незначительным, на мой взгляд, накладным расходам: вместо непосредственного вызова деструктора он будет вызван через указатель в VTBL, т.е. косвенно. Учитывая, что деструктор для данного объекта вызывается единственный раз, то, если не уничтожать объекты миллионами, эти наносекунды вряд ли удастся заметить на практике.