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;