На этом шаге мы рассмотрим использование деструкторов.
Деструктор представляет собой специальный вид метода, который удаляет объекты и освобождает занимаемую ими память. Деструкторы объявляются с использованием ключевого слова destructor вместо слова procedure.
Аналогично конструкторам, для которых рекомендуется использовать одинаковый идентификатор Create, для всех деструкторов рекомендуется использовать имя Destroy.
Деструкторы по-другому еще называют "сборщиками мусора". Как правило, деструктор объединяет все действия по освобождению памяти так, чтобы очистку можно было выполнить за один вызов деструктора. При вызове деструктора сначала выполняются действия, описанные программистом в теле деструктора, а затем уже его стандартные действия по освобождению памяти. Программист описывает как правило освобождение ресурсов, которым память была выделена при выполнении методов данного объекта. Последним оператором деструктора чаще всего является вызов родительского деструктора для корректного освобождения наследуемых ресурсов. Блок операторов деструктора может быть пустым. В этом случае, при вызове деструктора выполняются только его стандартные системные функции.
Для каждого класса, при необходимости, может быть описано несколько деструкторов, которые выполняют очистку памяти различными способами.
Деструкторы могут быть как статическими, так и виртуальными, и их разрешается наследовать. При этом следует помнить, что в виртуальных деструкторах классов-потомков требуется использовать директиву override. Поскольку для различных классов часто требуются разные методы освобождения памяти, то рекомендуется всегда объявлять деструкторы виртуальными, благодаря чему для каждого класса будет выполнен правильный деструктор.
Напомним также, что для освобождения памяти, занимаемой объектами, кроме деструктора Destroy используется еще метод Free, который является более предпочтительным способом уничтожения объектов.
Со следующего шага мы начнем знакомиться со свойствами.