Система Orphus

Шаблоны С++. Справочник разработчика

Авторы: Дэвид Вандевурд
Николаи М. Джосаттис
Издательство: "Вильямс", 2003
544 страницы

Материал предоставил: Валерий Лаптев
Найти в магазинах

Аннотация

Содержание
Комментарии

Аннотация

Шаблоны C++ представляют собой активно развивающуюся часть языка программирования, предоставляющую программисту новые возможности быстрой разработки эффективных и надежных программ и повторного использования кода. Данная книга, написанная в соавторстве теоретиком C++ и программистом-практиком с большим опытом, удачно сочетает строгость изложения и полноту освещения темы с вопросами практического использования шаблонов. В книге содержится масса разнообразного материала, относящегося к программированию с использованием шаблонов, в том числе материал, который даст опытным программистам возможность преодолеть современные ограничения в этой области. Книга предполагает наличие у читателя достаточно глубоких знаний языка C++; тем не менее стиль изложения обеспечивает доступность материала как для квалифицированных специалистов, так и для программистов среднего уровня.

Содержание

Предисловие

Благодарности

Глава 1. Об этой книге

Часть I. Основы

   Глава 2. Шаблоны функций
   Глава 3. Шаблоны классов 
   Глава 4. Параметры шаблонов, не являющиеся типами 
   Глава 5. Основы работы с шаблонами
   Глава 6. Применение шаблонов на практике
   Глава 7. Основные термины в области шаблонов

Часть II. Углубленное изучение шаблонов

   Глава 8. Вглубь шаблонов 
   Глава 9. Имена в шаблонах 
   Глава 10. Инстанцирование 
   Глава 11. Вывод аргументов шаблонов 
   Глава 12. Специализация и перегрузка 
   Глава 13. Направления дальнейшего развития 

Часть III. Шаблоны и конструирование

   Глава 14. Полиморфные возможности шаблонов 
   Глава 15. Классы свойств и стратегий 
   Глава 16. Шаблоны и наследование 
   Глава 17. Метапрограммы 
   Глава 18. Шаблоны выражений 

Часть IV. Нетрадиционное использование шаблонов

   Глава 19. Классификация типов 
   Глава 20. Интеллектуальные указатели 
   Глава 21. Кортежи 
   Глава 22. Объекты-функции и обратные вызовы 


Приложение А. Правило одного определения 
Приложение Б. Разрешение перегрузки 
Библиография
Глоссарий 
Предметный указатель

Комментарии

Валерий Лаптев

Жаль, что эта книга появилась после книги Александреску "Современное проектирование на С++". Хотя книга заявлена как справочник, но на самом деле она является скорее учебником по шаблонам. Это очень хорошее, я бы даже сказал, исчерпывающее (по крайней мере, на данный момент) описание шаблонов С++. Это и неудивительно, поскольку один из авторов (Дэвид Вандевурд) является членом рабочей группы Комитета по базовым стандартам языка С++, а другой (Николаи М. Джосаттис) - член рабочей группы Комитета по стандартам библиотек С++. Кому, как не им, писать такие книжки.

Книга состоит из 4-х частей. Первая часть, естественно, посвящена основам. Написано не только то, что можно делать с шаблонами, но и то, что нельзя. Вторая часть - развитие первой. Тут излагаются более тонкие моменты механизма шаблонов. Например, здесь описываются "взаимоотношения" шаблонов и единиц трансляции. Большой интерес вызывает 13-я глава, в которой описываются возможные будущие расширения механизма шаблонов. Некоторые из расширений уже просто просятся в С++. Например, параметры шаблонов функций по умолчанию, или не целые аргументы шаблонов. Скорее всего многие из представленных расширений появятся в следующем стандарте.

Но самыми интересными для программистов-практиков, конечно, являются третья и четвертая части. Наконец-то я увидел простое и понятное объяснения, откуда возникает необходимость класса свойств и как такой класс создать. Несомненный интерес представляют последние две главы 3-й части: метапрограммирование и шаблоны выражений. Программисты-ветераны сразу вспомнят макроассемблер, в котором с помощью макросов можно было делать то же самое (и даже больше, так как макроассемблер включает полный комплект управляющих макрооператоров). Однако метавычисления - это необычное и нестандартное применение шаблонов.

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

Для С++-программистов эта книга - настольная. Во всяком случая я держу ее под рукой постоянно.