Конструктори і деструктори
Клас може містити будь-яку кількість функцій - членів найрізноманітнішого призначення, але два типи функцій займають особливе становище. Ці функції називаються конструктором і деструкцією.
Для багатьох об'єктів природно вимагати, щоб вони були ініційовані (тобто мали початкове значення, а не сміття) до початку їх використання.
В С ++ для спрощення процесу ініціалізації об'єктів передбачена спеціальна функція, яка називається конструктором.
Конструктор - це компонентна функція, що викликається автоматично при створенні об'єкта класу і виконує необхідні ініціалізували дії.
Основне призначення - ініціалізація об'єктів.
- ініціалізація даних класу - завдання їм початкових
значень програмно або за замовчуванням,
ініціалізація об'єктів допоміжних класів і. т. д.
Ім'я конструктора має збігатися зім'ям класу.
3) Функція-конструктор не може повертати результат, навіть тип void НЕ
4) Функція автоматично викликається при визначенні об'єкта, або при розміщенні в пам'яті об'єкта за допомогою операцііnew.
Формат визначення конструктора в тілі класу:
<имя класса> (Список формальних параметрів)
Конструктор, як і будь-яка компонентна функція, може бути визначений і поза тілом класу, маючи в тілі класу прототип.
T (список параметрів);
Як правило, конструктори оголошуються у відкритій частині класу
Конструктор може бути відсутнім, при створенні екземплярів класу
компілятор автоматично виділяє під них пам'ять, хоча в цьому випадку
дані не инициализируются, і будуть містити сміття.
8) У визначенні класу можуть бути присутні кілька конструкторів.
Деструкція - це функція, яка автоматично виконується, коли екземпляр класу знищується.
(Або при виході об'єкта за межі своєї області видимості, або при знищенні динамічного об'єкта операцією delete).
Деструкція використовується, наприклад, якщо об'єкт - локальний і йому динамічно виділялася пам'ять, доцільно, щоб при виході з блоку, коли об'єкт перестає існувати, пам'ять була повернута системі. Бажано, щоб пам'ять звільнялася автоматично, операцію звільнення пам'яті можна включити в деструктор.
Клас може мати кілька конструкторів, але деструктор може бути тільки один.
Формат компонентної функції-деструктора
Між тильдой і ім'ям класу немає прогалин.
У деструктора немає типу результату навіть void і немає параметрів навіть тіпаvoid.
Деструкція виконується неявно, автоматично, як тільки об'єкт знищується. Його, як правило, ніколи не викликають, але можна і викликати явно, якщо він визначений в класі
При цьому об'єкт буде продовжувати існувати, тільки виконуватися ті дії, які записані в тілі деструктора.
Розглянемо клас Men. несе в собі дані про вік і імені індивідуума.
Нехай в цьому класі присутні і конструктор і деструктор.
У конструкторі крім ініціалізували, є ще висновок контрольного рядка.
Деструкція нехай також містить висновок інший контрольного рядка.