Нет, тебе не нужно явно вызывать деструктор базового класса. Компилятор автоматически вызывает деструкторы базовых классов как часть процесса уничтожения производного класса.
Когда объект производного класса уничтожается, деструкторы вызываются в следующей последовательности:
class Member {
public:
~Member();
};
class Base {
public:
virtual ~Base();
};
class Derived : public Base {
public:
~Derived();
private:
Member x_;
};
Derived::~Derived() {
// Компилятор автоматически вызывает x_.~Member()
// Компилятор автоматически вызывает Base::~Base()
}
virtual деструктор — это нужно для корректной полиморфной очисткиАвтоматический вызов гарантирует, что все ресурсы, которыми владеют базовые классы и члены, корректно освобождаются без твоего участия.
Деструкторы базовых классов автоматически вызываются компилятором во время уничтожения производного класса, что исключает необходимость в явных вызовах.
Новый — ещё не проверен сообществом
Вы