Деструктор объявляют как ~MyClass() без параметров и возвращаемого типа. Он вызывается при завершении времени жизни объекта и должен безопасно освобождать принадлежащие объекту ресурсы.
Создание собственного деструктора в классе
Деструктор объявляют как ~MyClass() без параметров и возвращаемого типа. Он вызывается при завершении времени жизни объекта и должен безопасно освобождать принадлежащие объекту ресурсы.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Разработайте класс, в котором будет реализован пользовательский деструктор. Деструктор должен выполнять необходимые действия по освобождению ресурсов или выводить сообщение при удалении экземпляра объекта.
class MyClass {
public:
~MyClass();
};
Ответ
Деструктор объявляют как ~MyClass() без параметров и возвращаемого типа. Он вызывается при завершении времени жизни объекта и должен безопасно освобождать принадлежащие объекту ресурсы.
Простой вариант с диагностикой:
#include <cstdio>
class MyClass {
public:
~MyClass() noexcept;
};
MyClass::~MyClass() noexcept {
std::puts("MyClass destroyed");
}
Для реального ресурса нужна соответствующая операция освобождения, а не только сообщение. Если членами уже владеют vector, string или unique_ptr, обычно достаточно автоматически созданного деструктора. Не освобождайте ресурс дважды и не выпускайте исключения из очистки.