ify"> Конструктор похідного класу може ініціалізувати protected-і public-компоненти базового класу, не виконуючи виклику конструктора. C + + викликає конструктор за замовчуванням базового класу, якщо цього не робить сам конструктор похідного класу. p align="justify"> Наступний фрагмент програми дасть той же результат, що й попереднє визначення конструктора.
(int v0, int v1): (v0) {//за замовчуванням - Level (v0) = e = f = v1;
}
Конструктори об'емлемих (див. наступний параграф) класів можна викликати в тому ж рядку, що і конструктор базового класу. Наступний конструктор Level1 еквівалентний двом попереднім:
(int v0, int v1): Level (v0), d (v1), e (v1), f (v1) {}
4. Осяжний класи
Порівняємо похідні класи з класом Level1, який обіймає , а не успадковує об'єкт класу Level0. Для таких класів використовують назву " осяжний класи ", наприклад:
Level1 {: Level0 L0;: int d;: int e;: f; f1 ();
};
// Непрівелегірованная функціяfn () {L1;. L0.c = 1;. f = 2;. L0.f0 ();. f1 ();
}
// Компонентна функціяLevel1 :: f1 () {. c = 1; = 2; e = 3; f = 4;. f0 ();
}
Доступність компонентів похідного і осяжний класів аналогічна. Level0 :: a недоступний для компонентів класу Level1, а Level0 :: c доступний. Захищений (protected) компонент Level0 :: b не доступний для більш осяжний класу. p> Основна відмінність між осяжний і похідним класами полягає в способі доступу до спадкоємною елементам. Всякий раз при доступі до елемента Level0 він задається конкретно, наприклад L0.c, L0.f0 () і т.д. Похідний же клас посилається до цих компонентів як до власних. p> Похідний клас використовує компоненти свого базового класу, у той час як осяжний клас просто надає місце компонентам іншого класу.
5. Приклади зв'язкових списків
Клас зв'язного списку [3] є досить популярним базовим класом, на якому побудовано безліч інших класів. Розглянемо реалізацію класу списку.
// ********************************//
// Програма для обробки об'єктів//
// класів "список", "двусвязний//
// список "," закільцований список "//
// ---------------------------------------- ---------//
// Автор: Каширін Д.І. // p align="justify">// ---------------------------------------- -//
// Версія: 07.12.02 v. 1.01.2//
//
// ---------------------------------------- -----------------------------------
# include
# include
# include
# include
...