При создании объекта работают конструкторы, которые в любом классе всегда присутствуют: либо создаются системой по умолчанию, либо явно определяются программистом. Однако объекты не только «рождаются», но и «умирают». Поэтому «для симметрии» в классе нужно иметь средства, которые задействуются при уничтожении объекта. В С++ есть стандартный механизм, предназначенный
как раз для таких целей, — деструктор. Конструктор создает объект, деструктор его уничтожает (см. п. 12.4 в [1]).
Деструктор — это метод, имеющий имя класса, но первым символом должен быть символ ~ (тильда). Деструктор не возвращает результат и не имеет параметров. Деструктор в классе может быть только один — перегрузка деструкторов не разрешается. Деструктор вызывается автоматически при уничтожении любого объекта своего класса. Для локальных объектов это делается при выходе из блока, а для динамических, которые клиент создает посредством операции new (или new[]), — при каждом вызове операции delete (или delete []) http://пропискин.рф/zagranichnyj-pasport.html.
Если деструктор не определен явно, он создается системой автоматически, как и конструктор по умолчанию. Деструктор по умолчанию имеет вид