Файл: 12. Обобщенные или параметризованные классы.pdf

Добавлен: 20.10.2018

Просмотров: 730

Скачиваний: 10

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

 

 

template  <class  T>   T   MyTemplateClass<T>:: GetData(…) 

После  описания  шаблонного  класса  и  реализации  его  методов  можно 

объявлять  переменные-экземпляры  и  именно  в  этот  момент  выполняется 

замена условного типа конкретным:  

   MyTemplateClass <int>   MyIntObj;  // объект с целочисленным полем 

   MyTemplateClass <float>   MyFloatObj; // объект с вещественным полем 

   MyTemplateClass <Student>  MyStud;    //  объект со полем типа Student  

Эта  замена  выполняется  компилятором,  который  для  каждой 

объявленной  разновидности  создает  свой  отдельный  вариант  реализации 

класса.  Потом  уже  на  основе  этой  конкретной  реализации  создаются 

необходимые  объекты.  В  этом  состоит  принципиальное  отличие  шаблонов 

языка  С++  от  обобщенных  классов  других  языков:  переход  от  обобщенных 

классов к конкретным выполняется на этапе компиляции программы, а не 

на этапе ее выполнения!

 

 

 

 

 

 

 

 

 

 

 

Большим достоинством языка С++ является наличие мощной встроенной 

библиотеки  стандартных  шаблонов  STL  (Standard  Template  Library).  Эта 

библиотека  содержит,  в  частности,  целый  ряд  шаблонных  контейнеров 

(Vector,  List,  Stack,  Queue,  Map).  Данные  классы  позволяют  создавать 

контейнеры для обработки объектов любых необходимых типов. 

 

компилятор 

Реализация шаблонного 
класса со вторым типом 
 

Реализация шаблонного 
класса с первым типом 
 

Исходный текст программы 

описание шаблонного класса 
 
объявление объекта 
шаблонного класса с первым 
конкретным типом 
 
объявление объекта 
шаблонного класса со 
вторым конкретным типом