Бьерн Страуструп - Язык программирования С++. Главы 5-8
Страница 70. Шаблоны типа



 * ГЛАВА 8. ШАБЛОНЫ  ТИПА


          Вот ваша цитата
             - Бьерн Страуструп

    В этой главе вводится понятие шаблона типа. С его помощью можно
    достаточно просто определить и реализовать без потерь в
    эффективности выполнения программы и, не отказываясь от статического
    контроля типов, такие контейнерные классы, как списки и ассоциативные
    массивы. Кроме того, шаблоны типа позволяют определить сразу для
    целого семейства типов обобщенные (генерические) функции, например,
    такие, как sort (сортировка). В качестве примера шаблона типов и
    его связи с другими конструкциями языка приводится семейство
    списочных классов. Чтобы показать способы получения программы из
    в значительной степени независимых частей, приводится несколько
    вариантов шаблонной функции sort(). В конце определяется простой
    шаблон типа для ассоциативного массива и показывается на двух
    небольших демонстрационных программах, как им пользоваться.

8.1 Введение


 Одним из самых полезных видов классов является контейнерный класс,
 т.е. такой класс, который хранит объекты каких-то других типов.
 Списки, массивы, ассоциативные массивы и множества - все это
 контейнерные классы. С помощью описанных в главах 5 и 7 средств
 можно определить класс, как контейнер объектов единственного,
 известного типа. Например, в $$5.3.2 определяется множество целых.
 Но контейнерные классы обладают тем интересным свойством, что тип
 содержащихся в них объектов не имеет особого значения для
 создателя контейнера, но для пользователя конкретного контейнера
 этот тип является существенным. Следовательно, тип содержащихся
 объектов должен параметром контейнерного класса, и создатель такого
 класса будет определять его с помощью типа-параметра. Для каждого
 конкретного контейнера (т.е. объекта контейнерного класса) пользователь
 будет указывать каким должен быть тип содержащихся в нем объектов.
 Примером такого контейнерного класса был шаблон типа Vector из
 $$1.4.3.
      В этой главе исследуется простой шаблон типа stack (стек) и
 в результате вводится понятие шаблонного класса. Затем рассматриваются
 более полные и правдоподобные примеры нескольких родственных шаблонов
 типа для списка. Вводятся шаблонные функции и формулируются правила,
 что может быть параметром таких функций. В конце приводится шаблон
 типа для ассоциативного массива.

 

 
« Предыдущая статья   Следующая статья »