Конструктори і деструктори

Клас може містити будь-яку кількість функцій - членів найрізноманітнішого призначення, але два типи функцій займають особливе становище. Ці функції називаються конструктором і деструкцією.

Для багатьох об'єктів природно вимагати, щоб вони були ініційовані (тобто мали початкове значення, а не сміття) до початку їх використання.

В С ++ для спрощення процесу ініціалізації об'єктів передбачена спеціальна функція, яка називається конструктором.

Конструктор - це компонентна функція, що викликається автоматично при створенні об'єкта класу і виконує необхідні ініціалізували дії.

Основне призначення - ініціалізація об'єктів.

- ініціалізація даних класу - завдання їм початкових

значень програмно або за замовчуванням,

ініціалізація об'єктів допоміжних класів і. т. д.

Ім'я конструктора має збігатися зім'ям класу.

3) Функція-конструктор не може повертати результат, навіть тип void НЕ

4) Функція автоматично викликається при визначенні об'єкта, або при розміщенні в пам'яті об'єкта за допомогою операцііnew.

Формат визначення конструктора в тілі класу:

<имя класса> (Список формальних параметрів)

Конструктор, як і будь-яка компонентна функція, може бути визначений і поза тілом класу, маючи в тілі класу прототип.

T (список параметрів);

Як правило, конструктори оголошуються у відкритій частині класу

Конструктор може бути відсутнім, при створенні екземплярів класу

компілятор автоматично виділяє під них пам'ять, хоча в цьому випадку

дані не инициализируются, і будуть містити сміття.

8) У визначенні класу можуть бути присутні кілька конструкторів.

Деструкція - це функція, яка автоматично виконується, коли екземпляр класу знищується.

(Або при виході об'єкта за межі своєї області видимості, або при знищенні динамічного об'єкта операцією delete).

Деструкція використовується, наприклад, якщо об'єкт - локальний і йому динамічно виділялася пам'ять, доцільно, щоб при виході з блоку, коли об'єкт перестає існувати, пам'ять була повернута системі. Бажано, щоб пам'ять звільнялася автоматично, операцію звільнення пам'яті можна включити в деструктор.

Клас може мати кілька конструкторів, але деструктор може бути тільки один.

Формат компонентної функції-деструктора

Між тильдой і ім'ям класу немає прогалин.

У деструктора немає типу результату навіть void і немає параметрів навіть тіпаvoid.

Деструкція виконується неявно, автоматично, як тільки об'єкт знищується. Його, як правило, ніколи не викликають, але можна і викликати явно, якщо він визначений в класі

При цьому об'єкт буде продовжувати існувати, тільки виконуватися ті дії, які записані в тілі деструктора.

Розглянемо клас Men. несе в собі дані про вік і імені індивідуума.

Нехай в цьому класі присутні і конструктор і деструктор.

У конструкторі крім ініціалізували, є ще висновок контрольного рядка.

Деструкція нехай також містить висновок інший контрольного рядка.