В дополнение:
Это происходит, потому что в АБК Role() виртуальный и в производных классах остаётся виртуальным. А при вызове Show() сначала определяется для кого Show() вызывать (ученика, учителя и тд), а после в самом методе вызывается Role() и точно также идет определение "к кому принадлежит Role()".
Также в main создадим указатель school из 5 объектов, указатель типа Person, благодаря этому мы можем спокойной создавать массив из производных классов от АБК и использовать их.
Начиная с класса VicePrincipal, в метод Show() был добавлен тернарный оператор, который добавляет окончание к слову class при необходимости:
Это происходит, потому что в АБК Role() виртуальный и в производных классах остаётся виртуальным. А при вызове Show() сначала определяется для кого Show() вызывать (ученика, учителя и тд), а после в самом методе вызывается Role() и точно также идет определение "к кому принадлежит Role()".
Также в main создадим указатель school из 5 объектов, указатель типа Person, благодаря этому мы можем спокойной создавать массив из производных классов от АБК и использовать их.
Начиная с класса VicePrincipal, в метод Show() был добавлен тернарный оператор, который добавляет окончание к слову class при необходимости:
void Show() const {
Teacher::Show();
std::cout << "Managed " << m_classesManaged;
m_classesManaged > 1 ? std::cout << " classes" : std::cout << " class";
std::cout << std::endl;
}
Просмотры: 32