Void main(). show(b); //використовується B::PrintOn()

{

B *b = new B;

C *c= new C;

show(b); //використовується B::PrintOn()

show(c); //використовується C::PrintOn()

delete b,c;

}

 

Клас А використовується винятково в якості базового для інших класів. Функція show(A*) у момент виконання базується на типі переданого їй об’єкта, визначає, яку використовувати функцію.

Клас, похідний від абстрактного, теж може бути абстрактним.

Якщо клас перевизначає будь-яку віртуальну функцію свого базового класу новою чистою віртуальною функцією, то він теж абстрактний. С++ потребує перевизначити у похідних класах усі чисті віртуальні функції. Відсутність перевизначеня чистої віртуальної функції призводить до помилки компіляції. Такий фрагмент коду ілюструє деякі проблеми, що виникають, якщо не перевизначити у похідному класі всі чисті віртуальні функції базового класу. Розглянемо просте дерево на рисунку 4.2.

Рис. 4.2. Похідний клас, що не перевизначає чистої

віртуальної функції базового класу

На рис.4.2. показано, що клас В, який породжений від А, не перевизначає чисту віртуальну функцію A::f(). От як виглядає відповідний код:

 








Дата добавления: 2014-12-26; просмотров: 654;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.