Глава 19

h05121.jpg

Классы-шаблоны

Параметризованные типы были предложены в 1988 г. в работе Бьерна Страуструпа и приняты документом ANSI в 1990 г. Реализация их, однако, более или менее устоялась лишь в 1992 году, в котором, кстати, и язык C++ реально заявил о себе.

Если вам прежде попадались книги по C++, то вы могли обратить внимание, что шаблоны обычно рассматриваются ближе к концу книги. Причина этого, вероятно, в том, что параметризованные типы кажутся совершенно непонятными. Будем надеяться, что при ближайшем рассмотрении вы убедитесь в том, что все не так страшно.

Суть шаблонов (template) или как их еще называют родовых (generic) функций и классов состоит в отделении алгоритмов от типов данных. Обрати ге внимание ~ неважно, каких алгоритмов. Родовые функции и классы представляют собой понятное, надежное и вполне устоявшееся средство создания профамм.

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

• Знакомство с родовым программированием, в частности с шаблонами

• Родовые функции

• Родовые алгоритмы сортировки

• Обзор родовых классов