ВУЗ:
Составители:
Рубрика:
Объектно-ориентированное программирование на С++
Student(fio, d, m, y, ntb, mark)
{
. . .
}
Если вызов конструктора базового класса не указывается явно,
автоматически осуществляется вызов конструктора базового класса, не
имеющего параметров.
Заметим, что конструктор производного класса должен
инициализировать как базовую компоненту, так и собственную. Поэтому
параметры конструктора производного класса содержат данные для
инициализации обеих компонент. Далее параметры, инициализирующие
структурные свойства базового класса передаются его конструктору, а
конструктор производного класса инициализирует только собственную
часть (для нашего примера свойства стоимости обучения и
задолженности по оплате).
Аналогично, при разрушении объекта должны вызываться оба
деструктора – базового и производного классов. Порядок вызова
деструкторов обратный – сначала разрушается собственная компонента
производного класса, потом автоматически вызывается деструктор
базового класса для разрушения базовой компоненты.
Переопределение методов базового класса в производном вызвано
необходимостью добавления новой функциональности к поведению,
определенному базовым классом, или с определением принципиально
другого поведения в производном классе.
При переопределении в производный класс добавляется метод с тем
же именем и прототипом, что и метод базового класса. Таким образом,
производный класс будет содержать два метода с одним и тем же
прототипом: унаследованный от базового класса и собственный метод,
который скрывает базовый метод. Объект производного класса будет
вызывать переопределенный метод. Тем не менее, остается возможность
вызова метода базового класса. Это бывает необходимо, когда объект
производного класса должен выполнить те же действия, что и объект
базового класса, и в дополнение к ним другие действия.
Например, метод класса Student, проверяющий, допущен ли
студент к сессии, должен проверить только, сданы ли студентом все
зачеты:
// метод проверки допуска к экзаменационной сессии
// для класса Student
97
Объектно-ориентированное программирование на С++
Student(fio, d, m, y, ntb, mark)
{
. . .
}
Если вызов конструктора базового класса не указывается явно,
автоматически осуществляется вызов конструктора базового класса, не
имеющего параметров.
Заметим, что конструктор производного класса должен
инициализировать как базовую компоненту, так и собственную. Поэтому
параметры конструктора производного класса содержат данные для
инициализации обеих компонент. Далее параметры, инициализирующие
структурные свойства базового класса передаются его конструктору, а
конструктор производного класса инициализирует только собственную
часть (для нашего примера свойства стоимости обучения и
задолженности по оплате).
Аналогично, при разрушении объекта должны вызываться оба
деструктора – базового и производного классов. Порядок вызова
деструкторов обратный – сначала разрушается собственная компонента
производного класса, потом автоматически вызывается деструктор
базового класса для разрушения базовой компоненты.
Переопределение методов базового класса в производном вызвано
необходимостью добавления новой функциональности к поведению,
определенному базовым классом, или с определением принципиально
другого поведения в производном классе.
При переопределении в производный класс добавляется метод с тем
же именем и прототипом, что и метод базового класса. Таким образом,
производный класс будет содержать два метода с одним и тем же
прототипом: унаследованный от базового класса и собственный метод,
который скрывает базовый метод. Объект производного класса будет
вызывать переопределенный метод. Тем не менее, остается возможность
вызова метода базового класса. Это бывает необходимо, когда объект
производного класса должен выполнить те же действия, что и объект
базового класса, и в дополнение к ним другие действия.
Например, метод класса Student, проверяющий, допущен ли
студент к сессии, должен проверить только, сданы ли студентом все
зачеты:
// метод проверки допуска к экзаменационной сессии
// для класса Student
97
Страницы
- « первая
- ‹ предыдущая
- …
- 95
- 96
- 97
- 98
- 99
- …
- следующая ›
- последняя »
