МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах
РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ" ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах Гендерна антидискримінаційна експертиза може зробити нас моральними рабами ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів Контакти
Тлумачний словник |
|
|||||||
Множинне спадкуванняМножинне спадкування означає, що клас має кілька базових класів. Якщо в базових класах є однойменні елементи, при цьому може відбутися конфлікт ідентифікаторів, що усувається за допомогою операції доступу до області видимості: class monstr{ public: int get_health(); .... }; class hero{ public: int get_health(); ... }; class ostrich: public monstr, public hero{ … }; int main(){ ostrich A; cout << A.monstr::get_health(); cout << A.hero::get_health(); } Як видно з приклада, для виклику методу get_health потрібно явно вказувати клас, у якому він описаний. Використання звичайної для виклику методу класу конструкції A.get_hea1th() приведе до помилки, оскільки компілятор не в змозі розібратися, до методу якого з базових класів потрібно звернутися. Якщо в базових класів є загальний предок, це приведе до того, що похідний від цих базових клас успадкує два екземпляри полів предка, що найчастіше є небажаним. Щоб уникнути такої ситуації, потрібно при спадкуванні загального предка визначити його як віртуальний клас: class monstr{ … }; class daemon: virtual public monstr{ }: class lady: virtual public monstr{ … }; class baby: public daemon, public lady{ … }; Клас baby містить тільки один екземпляр полів класу monstr. Якщо базовий клас успадковується і як віртуальний, і звичайним образом, у похідному класі будуть присутні окремі екземпляри для кожного невіртуального входження і ще один екземпляр для віртуального. Множинне спадкування застосовується для того, щоб забезпечити похідний клас властивостями двох або більш базових. Найчастіше один з цих класів є основним, а інші забезпечують деякі додаткові властивості, тому вони називаються класами підмішування. По можливості класи підмішування повинні бути віртуальними і створюватися за допомогою конструкторів без параметрів, що дозволяє уникнути багатьох проблем, що виникають при ромбовидному спадкуванні (коли в базових класів є загальний предок).
|
||||||||
|