Если у меня есть базовый класс с виртуальным деструктором. Имеет ли производный класс объявление виртуального деструктора тоже?
class base {
public:
virtual ~base () {}
};
class derived : base {
public:
virtual ~derived () {} // 1)
~derived () {} // 2)
};
Конкретные вопросы:
- Является ли 1) и 2) тем же? Является ли 2) автоматически виртуальным из-за своей базы или "останавливает" виртуальность?
- Может ли производный деструктор быть опущен, если ему нечего делать?
- Какая наилучшая практика для объявления производного деструктора? Объявить его виртуальным, не виртуальным или опустить его, если это возможно?