Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Ранее были рассмотрены шаблоны функций, с помощью которых можно отделить алгоритм от конкретных типов данных, с которыми он работает, передавая тип в качестве параметра.
Шаблоны классов предоставляют аналогичную возможность, позволяя создавать параметризованные классы.
Параметризованный класс создает семейство родственных классов, которые можно применять к любому типу данных, передаваемому в качестве параметра.
Наиболее широкое применение шаблоны находят при создании контейнерных классов.
Контейнерным называется класс, который предназначен для хранения каким-либо образом организованных данных и работы с ними.
Стандартная библиотека C++ содержит множество контейнерных классов для организации структур данных различного вида.
Преимущество использования шаблонов состоит в том, что как только алгоритм работы с данными определен и отлажен, он может применяться к любым типам данных без переписывания кода.
Шаблоны классов, так же как и шаблоны функций, поддерживают в C++ парадигму обобщенного программирования, то есть программирования с использованием типов в качестве параметров.
Механизм шаблонов в C++ допускает применение абстрактного типа в качестве параметра при определении класса или функции.
После того как шаблон класса определен, он может использоваться для определения конкретных классов.
Процесс генерации компилятором определения конкретного класса по шаблону класса и аргументам шаблона называется инстанцированием шаблона (template instantiation).
Рассмотрим, например, точку на плоскости. Для ее представления ранее мы разработали класс point, в котором положение точки задавалось двумя координатами х и у — полями типа double. Представим теперь, что в другом приложении требуется задавать точки для целочисленной системы координат, то есть использовать поля типа int. Можно вообразить себе системы, в которых координаты точки имеют тип short или unsigned char.
Так что же — определять каждый раз новый класс point для каждой из этих задач? Бьерна Страуструпа очень раздражала такая перспектива, и он добавил в C++ поддержку шаблонов классов.
Дата публикования: 2014-11-28; Прочитано: 322 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!