Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Шаблоны классов



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

Шаблоны классов предоставляют аналогичную возможность, позволяя создавать параметризованные классы.

Параметризованный класс создает семейство родственных классов, которые можно применять к любому типу данных, передаваемому в качестве параметра.

Наиболее широкое применение шаблоны находят при создании контейнерных классов.

Контейнерным называется класс, который предназначен для хранения каким-либо образом организованных данных и работы с ними.

Стандартная библиотека C++ содержит множество контейнерных классов для организации структур данных различного вида.

Преимущество использования шаблонов состоит в том, что как только алгоритм работы с данными определен и отлажен, он может применяться к любым типам данных без переписывания кода.

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

Механизм шаблонов в C++ допускает применение абстрактного типа в качестве параметра при определении класса или функции.

После того как шаблон класса определен, он может использоваться для определения конкретных классов.

Процесс генерации компилятором определения конкретного класса по шаблону класса и аргументам шаблона называется инстанцированием шаблона (template instantiation).

Рассмотрим, например, точку на плоскости. Для ее представления ранее мы разработали класс point, в котором положение точки задавалось двумя координатами х и у — полями типа double. Представим теперь, что в другом приложении требуется задавать точки для целочисленной системы координат, то есть использовать поля типа int. Можно вообразить себе системы, в которых координаты точки имеют тип short или unsigned char.

Так что же — определять каждый раз новый класс point для каждой из этих задач? Бьерна Страуструпа очень раздражала такая перспектива, и он добавил в C++ поддержку шаблонов классов.





Дата публикования: 2014-11-28; Прочитано: 322 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...