Бьерн Страуструп. Язык программирования С++ Второе дополненное издание



Pdf көрінісі
бет151/256
Дата11.07.2022
өлшемі2,87 Mb.
#37591
1   ...   147   148   149   150   151   152   153   154   ...   256
ГЛАВА 8. ШАБЛОНЫ ТИПА 
Вот ваша цитата 
- Бьерн Страуструп 
В этой главе вводится понятие шаблона типа. С его помощью можно достаточно просто определить и 
реализовать без потерь в эффективности выполнения программы и, не отказываясь от статического 
контроля типов, такие контейнерные классы, как списки и ассоциативные массивы. Кроме того, 
шаблоны типа позволяют определить сразу для целого семейства типов обобщенные (генерические) 
функции, например, такие, как sort (сортировка). В качестве примера шаблона типов и его связи с 
другими конструкциями языка приводится семейство списочных классов. Чтобы показать способы 
получения программы из в значительной степени независимых частей, приводится несколько вариантов 
шаблонной функции sort(). В конце определяется простой шаблон типа для ассоциативного массива и 
показывается на двух небольших демонстрационных программах, как им пользоваться. 
8.1 Введение 
Одним из самых полезных видов классов является контейнерный класс, т.е. такой класс, который 
хранит объекты каких-то других типов. Списки, массивы, ассоциативные массивы и множества - все это 
контейнерные классы. С помощью описанных в главах 5 и 7 средств можно определить класс, как 
контейнер объектов единственного, известного типа. Например, в $$5.3.2 определяется множество 
целых. Но контейнерные классы обладают тем интересным свойством, что тип содержащихся в них 
объектов не имеет особого значения для создателя контейнера, но для пользователя конкретного 
контейнера этот тип является существенным. Следовательно, тип содержащихся объектов должен 
параметром контейнерного класса, и создатель такого класса будет определять его с помощью типа-
параметра. Для каждого конкретного контейнера (т.е. объекта контейнерного класса) пользователь 
будет указывать каким должен быть тип содержащихся в нем объектов. Примером такого контейнерного 
класса был шаблон типа Vector из $$1.4.3. 
В этой главе исследуется простой шаблон типа stack (стек) и в результате вводится понятие 
шаблонного класса. Затем рассматриваются более полные и правдоподобные примеры нескольких 
родственных шаблонов типа для списка. Вводятся шаблонные функции и формулируются правила, что 
может быть параметром таких функций. В конце приводится шаблон типа для ассоциативного массива. 


Достарыңызбен бөлісу:
1   ...   147   148   149   150   151   152   153   154   ...   256




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет