ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 9) онлайн
Какой из методов использовать?
В классе Stack2 содержатся два метода: push() и pop(). Эти методы имеют те же имена, аргументы и возвращаемые значения, что и методы класса Stack. Если мы вызываем эти методы из функции main() оператором типа:
S1.push ( 11 );
то как же компилятор поймет, какой из двух методов push() вызвать? Существу- ет правило: если один и тот же метод существует и в базовом, и в производном классе, то будет выполнен метод производного класса. (Это верно для объектов производного класса. Объектам базового класса ничего не известно о производ- ном классе, поэтому они всегда пользуются методами базового класса.) В этом случае мы говорим, что метод производного класса перегружает метод базового класса. Для нашего примера, так как s1 — это объект класса Stack2, то будет вы- полнен метод push() класса Stack2, а не класса Stack.
Метод push() класса Stack2 проверяет, полон ли стек: если да, то он посылает сообщение об ошибке и завершает программу; если нет, то вызывается метод push() класса Stack. Таким же образом метод pop() класса Stack2 осуществляет проверку того, пуст ли стек. Если да, то выводится сообщение об ошибке и про- грамма завершается, если нет, то вызывается метод pop() класса Stack.
В функции main() мы помещаем в стек три числа, а извлечь пытаемся четы- ре. Поэтому последний вызов метода pop() приводит к ошибке
33 22 11
Ошибка: стек пуст и программа завершается.
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
Схожі підручники
- Конспект лекцій з курсу Введення у фінансову діяльність (частина 1)
- Белая книга (частина 6) (онлайн)
- МЕТОДИЧНІ ВКАЗІВКИ до виконання розрахункової роботи з навчальної дисципліни “Економіко-математичні методи та моделі оптимізаційні методи та моделі”
- Про інвестиційну діяльність
- Легкий способ перестать откладывать дела на потом
- Історія економіки та економічної думки