virtual-destructor

Я знаю, что это хорошая практика объявлять виртуальные деструкторы для базовых классов в C++, но всегда ли важно объявлять virtual деструкторы даже для абстрактных классов, которые функционируют в качестве интерфейсов? Просьба привести некоторые причины и примеры, почему....

Если у меня есть базовый класс с виртуальным деструктором. Есть ли производный класс для объявления виртуального деструктора тоже? class base { public: virtual ~base () {} }; class derived : base { public: virtual ~derived () {} // 1) ~derived () {} // 2) }; конкретные вопросы: это 1) и 2) ...