русс | укр

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

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


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


Виклик методів похідного класу


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


Клас Stack2 містить два методи: push() і pop(). Ці методи мають ті ж імена, аргументи і повернуті значення, що й методи класу Stack. Якщо ми викликаємо ці методи з функції main() оператором типу

s1.push(11);

то як компілятор зрозуміє, який з двох методів push() викликати? Існує правило: якщо один і той самий метод існує і в базовому, і в похідному класі, то буде викликаний метод похідного класу. (Це правило діє для об’єктів похідного класу, оскільки базовому класу взагалі нічого не відомо про похідний клас, то його об’єкти викликатимуть методи базового класу). В цьому випадку ми говоримо, що метод похідного класу перезавантажує метод базового класу. Для нашого прикладу, оскільки s1 - об’єкт класу Stack2, то буде викликаний метод push() класу Stack2.

Метод push() класу Stack2 перевіряє, чи повний стек: якщо так, то він посилає повідомлення про помилку і закриває програму, якщо ні, то викликається метод push() класу Stack. Так само метод pop() класу Stack2 здійснює перевірку того, чи стек не порожній. Якщо так, то виводиться повідомлення про помилку, інакше викликається метод pop() базового класу Stack.

 

Операція дозволу і перезавантаження функцій

Як методи push() і pop() класу Stack2 дістають доступ до методів push() і pop() класу Stack? Вони використовують операцію дозволу :: у такий спосіб

Stack::push(var);

Stack::pop();

В цих рядках визначено, що будуть викликані методи класу Stack. Без операції дозволу компілятор вирішить, що методи push() і pop() викликають самі себе, що в нашому випадку призведе до помилки програми. Використання методу дозволу дає змогу точно визначити, до якого класу відноситься викликаний метод.

 


<== попередня лекція | наступна лекція ==>
Перезавантаження функцій | Складніший приклад успадковування


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