Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Новые рефераты » Перевантаження операцій в С + +

Реферат Перевантаження операцій в С + +





public Base {(char * n): Base (n) {} print () {<<"Це компонент підкласу ="

<

<

}

}; main () {aBaseObject; aSubClassObject;

}


Посилання на print () за замовчуванням відноситься до методу найнижчого рівня, який можна застосувати в цьому випадку. У наведеному прикладі aBaseObject.print () посилається на Base :: print (), тоді як aSubClassObject.print () посилається на SubClass :: print (). Програма може викликати конкретну функцію, якщо задано повністю кваліфіковане ім'я, наприклад aSubClassObject.Base :: print (). Методи підкласу можуть таким же способом посилатися на методи базового класу. Разом з тим програма не може посилатися на aBaseObject.SubClass :: print (), оскільки SubClass :: print () не є компонентом класу Base. p align="justify"> Якщо метод підкласу перекриває своїм новим визначенням метод базового класу, то можуть вознікнть проблеми. Розглянемо, що означатиме для функції fn () визначення нового методу print (). p align="justify"> fn (Base & aBaseRef) {<<"З fn ():";. print ();

}


Об'єкт aBaseRef тепер оголошений як відноситься до класу Base. Посилання на aBaseRef.print () завжди буде фактично ставитися до Base :: print (), але замість об'єкта базового класу буде використано об'єкт підкласу. Таким чином, fn () можна викликати або як fn (aSub ClassObject), або як fn (aBaseClassObject). Виклик print () відповідно, призведе до виклику функції SubClass :: print (). p align="justify"> Як УЖК було сказано раніше, використання одного і того ж імені при виклику функції для різних типів параметрів або для класів різних рівнів спадкування називається поліморфізмом . Для підтримки поліморфізму мову програмування повинна мати можливість під час виконання приймати рішення про те, яка саме компонентна функція з цим ім'ям має бути викликана. Цей процес носить назву пізнього зв'язування . Таку назву цього механізму говорить про те, що вибір поліморфної функції-методу, яку необхідно виконати в даному місці програми, здійснюється безпосередньо в процесі виконання програми. Внаслідок сказаного, пізніше зв'язування уповільнює виконання програми, тому що при виклику поліморфної функції програма повинна виконати ряд зайвих звернень до оперативної пам'яті комп'ютера. + + залишає використання пізнього зв'язування на розсуд програміста. Типово, навіть за наявності неоднозначності імен, транслятором приймається рішення про ранній зв'язуванні імен програми. Отже, за способом запису визначень класів fn () завжди буде давати звернення до Base :: print (). Пізніше зв'язування тут не виконується. Додавання у визначення функції ключового слова virtual робить цю функцію поліморфної.


Назад | сторінка 4 з 6 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Base and Superstructure
  • Реферат на тему: Основні системи побудови мережі 10 Base T
  • Реферат на тему: Розробка проекту локальної обчислювальної мережі на основі технології 1000 ...
  • Реферат на тему: Оптимізація механізованої лінії перевантаження лісу в пакетах
  • Реферат на тему: Комплексна механізація перевантаження листової сталі в пакетах