Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ
Національний університет “Львівська політехніка”
ЗВІТ
до лабораторноі работи № 4
Реалізація ієрархії в мові С++. Множинне успадкування.
Виконав
Ст.гр.КН-1
Львів 2006
1. МЕТА РОБОТИ
Мета даної роботи є ознайомлення із принципами множинного успадкування.
2. ТЕОРЕТИЧНА ЧАСТИНА
Ієрархію простого успадкування можна описати, використовуючи структуру дерева, де кожен вузол - це підклас, який може породжувати довільну кількість додаткових підкласів. Як і у випадку простого успадкування, визначення private, protected i public в батьківському класі можна використовувати для управління доступом до екземплярів змінних і методів, які успадковані похідним класом (підкласом) від базового (батьківського) класу.
Крім того, специфікатори public - або private - похідного класу, як і при простому успадкуванні, визначають кожні класи, об’єкти яких мають прямий доступ до відкритих даних або функцій-членів базового класу.
Множинне успадкування реалізовано у версіях С++, починаючи з 2.0.
Підклас може успадковувати протокол одного або більше батьківських класів. При цьому, помимо специфікаторів public- і private- похідних класів використовується додаткова опція virtual.
Приклад опису класів при множинному успадкуванні:
class X1
{private:
d1;
m1;
protected
d2;
m2;
public:
d3;
m3;
};
class X2
{private:
d4;
m4;
protected
d5;
m5;
public:
d6;
m6;
};
class Z: public X1 , public X2
{private:
zd1; zm1;
protected
zd2; zm2;
private:
zd3; zm3;
};
Похідний клас в ієрархії множинного успадкування не має доступу до захищених екземплярів змінних любих його базових класів.
При використанні множинного успадкування , в протокол похідного класу необхідно викликати конструктори базових класів для ініціалізації полів даних та ініціалізувати різні елементи об’єктів.
Порядок виклику конструкторів:
Ініціалізація здійснюється в порядку, визначеному ініціалізуючим списком з тим обмеженням, що конструктори базових класів завжди викликаються перед конструктором полів даних.
Void - конструктори базових класів, які явно не вказані в списку ініціалізації, викликаються після конструкторів, явно ініціалізованих базових класів, в цьому порядку, в якому вони йдуть в оголошенні класу. Але void - конструктори викликаються перед любим конструктором полів даних.
Для опису ієрархії множинного успадкування можна використати прямий ациклічний граф (ПАГ) (рис.1).
Parent
Child1 Child2
GrandChild
Рис.1. ПАГ множинного успадкування
В такому графі клас може з’явитись більше, ніж один раз. Розглянемо ПАГ множинного успадкування, представлений на рис.1. Елементи даних (екземпляри змінних) класу Parent з‘являються двічі в класі GrandChied. Перший набір успадковується через Chid1, другий через Chid2. Таке успадкування буває небажаним. Віртуальні базові класи [3,4,5] забезпечують механізм для уникнення дублювання елементів в класі, такому як GrandChied.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!