русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Тема 13. Віртуальні функції


Дата додавання: 2014-04-22; переглядів: 1625.


 

Вступ

Віртуальні функції

Доступ до звичайних методів через вказівники

Доступ до віртуальних методів через вказівники

Пізнє зв’язування

Абстрактні класи і чисті віртуальні функції

Приклад використання віртуальних функцій

Віртуальні деструктори

Віртуальні базові класи

Дружні функції

Дружні функції як мости між класами

Приклад використання дружніх функцій

Дружність і функціональний запис

Дружні класи

Статичні функції

Доступ до статичних функцій

Ініціалізація копіювання і присвоювання

Перезавантаження оператора присвоювання

Конструктор копіювання

Ефективне використання пам’яті класом String

Вказівник this

Доступ до компонентних даних через вказівник this

Використання this для повернення значення

Удосконалена програма роботи з типом String

Уникайте неправильних присвоювань

Підсумок

Питання по темі

 

Вступ

У цій темі вивчаються віртуальні функції, дружні функції, статичні функції, перезавантажувані операції та методи і вказівник this. Всі вони є прогресивними особливостями мови, однак не всюди їх варто використовувати. Невеликі програми можуть обійтися і без них. Тим не менше, вони часто використовуються і дуже важливі для великих серйозних програм. Зокрема, віртуальні функції необхідні при використанні поліморфізму – одного з основоположних принципів ООП.

 

Віртуальні функції

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

Для чого взагалі потрібні віртуальні функції? Уявимо собі, що ми створили набір об’єктів різних класів (масив, стек, чергу і т.п.), але ми хочемо, щоб вони самі і дії з ними викликалися за допомогою того самого виразу. ООП надає нам таку можливість завдяки притаманному цьому підходу поліморфізму, тобто набору різноманітних форм. Поліморфізм, поряд з класами та успадковуванням, є основоположним принципом ООП.

Щоб використовувати поліморфізм, необхідно виконати певні умови. По-перше, всі класи повинні бути спадкоємцями одного базового класу, по-друге, функція має бути оголошена як віртуальна у базовому класі (на відміну від Паскалю, в С++ достатньо оголосити про віртуальність методу один раз).

 


<== попередня лекція | наступна лекція ==>
Підсумок | Доступ до звичайних методів через вказівники


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн