скористатися будь спеціально визначеній програмістом функцією-членом класу, наприклад InitObject або SetObject. Разом з тим, це накладає на програміста додаткові обов'язки, наприклад, записувати виклик цих функцій для кожного знову визначається об'єкта. Подолати цю незручність в С + + досить просто, використовуючи конструктори класів. Для деякого класу конструктор - це функція, що є його членом і має ім'я, що збігається з ім'ям самого класу, а також не містить типу значення, що повертається. Особливістю функції є її автоматичний виклик для кожного з об'єктів класу в той момент, коли по природному ходу виконання програми зустрічається опис об'єкта:
class Vectors {A [25], B [25], C [25];: (); VectorsSum (Vectors *, Vectors *);
// Інші методи
}; :: Vectors ()
{(A, 0, 25); (B, 0, 25); (C, 0, 25);
}
void main ()
{
Vectors First;// У цьому місці будуть викликані
Vectors Second;// конструктори для First і Second.
// Оператори програми
}
Конструктор представляє собою спеціальну функцію, яку C + + автоматично викликає щоразу при створенні об'єкта. Звичайне призначення конструктора полягає в ініціалізації елементів даних об'єкта. Конструктор має таке ж ім'я, як і клас. Клас з ім'ям file використовує конструктор з ім'ям file. Ви визначаєте конструктор всередині своєї програми так само, як і будь-який метод класу. Єдина відмінність полягає в тому, що конструктор не має значення, що повертається. Коли ви пізніше розкажете об'єкт, ви можете передавати параметри конструктору. Одним з важливих властивостей конструктора є його автоматичний виклик при описі будь-якого об'єкта-якого класу, що використовує конструктор, що знімає з програміста завдання своєчасного відстеження ініціалізації нововведених об'єктів. У загальному випадку конструктори класів можуть мати списки пара-метрів, які можуть знадобитися при ініціалізації. При цьому програміст буде зобов'язаний задати список ініціалізації при описі кожного нового об'єкта, наприклад, розглянемо клас дат з відповідним конструктором:
class Date {Month, Day, Year;: (int, int, int); GetDate ();
}; :: Date (int M, int D, int Y)
{= M; Day = D; Year = Y;
}
void main ()
{MemDay (10, 15, 1993);// Обов'язкова ініціал-
Date NewDate = MemDay;// зація, інакше: Another;// Помилка!
// Оператори програми
}
Обмеженням використання конструкторів є заборона використання його імені в якості явного аргуме...