Деструктори виконують усі необхідні дії перед знищенням об’єкта. Деструктори автоматично викликаються компілятором:
1) при виході з області видимості;
2) при створенні тимчасових об’єктів для перетворення у виразах або для передачі функціям аргументів;
3) коли значення, що повертаються функцією, більше не потрібні;
4) при виконанні операції delete для об’єктів, розміщених у динамічній пам’яті.
Деструктори мають те ж ім’я, що й клас, до якого спереду доданий значок «тильда» (~). Деструктори не мають значення, що повертається, і не одержують аргументів, отже, не можуть бути перевантажені.
class IntStack
{
int *v, size, top;
public:
IntStack(int ezis=20);
~IntStack(){delete[] v;} //деструктор
// ...
};
void main()
{
IntStack s(100);
IntStack* ps = new IntStack(50);
// ...
delete ps; // викликається деструктор для ps
// неявно викликається деструктор для s
}
Деструктор може бути явно викликаний із використанням операції вибору члена.