Конструктори

Раніше наведене оголошення класу CFrame дозволяє ініціалізувати змінні-члени об'єктів класу шляхом виклику програмою користувача функції-члена класу SetCoord().

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

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

Наприклад, наступний варіант класу CFrame містить конструктор, що приймає чотири аргументи для ініціалізації змінних-членів:

 

class CFrame

{

private:

int Left;

int Top;

int Right;

int Bottom;

public:

// конструктор:

CFrame (int L, int T, int R, int B)

{

SetCoord (L, T, R, B);

}

// визначення інших функцій-членів

};

 

Для створення об'єктів класу з використанням конструктора необхідно, щоб конструктор був функцією-членом, оголошеним розробником класу в розділі public.

При оголошенні об'єкту значення аргументів передаються конструктору з використанням синтаксису, подібного до звичайного виклику функції, наприклад:

 

CFrame Frm(25, 25, 100, 100);

 

Таке оголошення створює об'єкт класу CFrame, викликаючи конструктор класу і передаючи йому задані значення аргументів.

При створенні об'єкту класу в динамічній пам’яті значення аргументів можна передати конструктору, використовуючи оператор new:

 

CFrame *PFrm = new CFrame (25, 25, 100, 100);

Оператор new автоматично викликає конструктор для створеного ним об'єкту, що є важливою перевагою використання оператора new у порівнянні з іншими методами виділення пам'яті, наприклад, за допомогою виклику бібліотечної функції malloc().

Маючи конструктор, можна створити об'єкт класу CFrame і намалювати прямокутник за допомогою тільки двох операторів:

 

void main()

{

CFrame Frm (25, 25, 100, 100); // створення об'єкту і завдання

// розмірів прямокутника

Frm.Draw(); // малювання прямокутника

}