Мы знаем, что деструктор базового класса помечен как виртуальный для правильного уничтожения экземпляров производного класса как указателей базового типа. Тогда каковы различия между следующими методами деструктора производного класса?
- Простой деструктор:
~Derived();
- Деструктор с переопределением:
~Derived() override;
- Деструктор по умолчанию с переопределить:
~Derived() override = default;
- Виртуальный деструктор:
virtual ~Derived() override = default;
Также есть известная передовая практика?