Деструктори

Деструктори виконують усі необхідні дії перед знищенням об’єкта. Деструктори автоматично викликаються компілятором:

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

}

 

Деструктор може бути явно викликаний із використанням операції вибору члена.