542_____________________________Часть IV. Новые возможности C++
приведем пример использования OWL после краткого отступления для обсуждения полиморфизма.
Полиморфизм
Полиморфизм (polymorphism) — это довольно легкая для понимания концепция, которая играет в объектно-ориентированном программировании важную роль. Буквально полиморфизм означает обладание многими формами. Эбъект в вашем коде — экземпляр некоторого класса — в действительности может представлять много различных классов, если они связаны с каким-то эбщим базовым классом. Возьмем в качестве примера нашу иерархию ма-ииностроительной фирмы. Экземпляр класса EngineeringManager можно эассматривать не только как таковой, но также как экземпляр класса
engineer. Manager, SalariedEmployee ИЛИ Employee. Такой ПОЛИМОРФИЗМ, КО-
1ечно, является прямым следствием наследования:
итак, что хорошего для нас в том, что экземпляр класса EngineeringManager ложет рассматриваться также и как экземпляр класса Enginee»ingManager,
ingineer, Manager, SalariedEmployee ИЛИ Employee? Посмотрим, ЧТО СЛУЧИЛОСЬ
)ы, если бы мы определили специализированную функцию для вывода информации о каждом классе в иерархии нашей машиностроительной фирмы. Например, что, если бы мы добавили виртуальную функцию под названием 'rintData к нашему базовому классу Employee? В C++ объявление функции ;ак виртуальной заставит систему во время выполнения программы найти )еализацию виртуальной функции для соответствующего производного aiacca и вызвать ее. Посмотрим снова на некоторые из наших классов.
?сли мы добавим виртуальную функцию printData к нашему классу Employee ледующим образом:
:lass Employee
lublic:
Employee() ;
virtual 'Employee () ;
void SetSocialSecurityNumber(long);
long GetSocialSecurityNumber() ;
virtual void PrintData () ;
'rivate:
long socialSecurityNumber;
[ объявим функцию PrintData:
oid Employee::PrintData()
cout « "Номер страховки: " « socialSecurityNumber « endl;