Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Шаблоны классов ⇐ ПредыдущаяСтр 7 из 7 n Шаблон класса имеет вид:
template <список параметров> n Список параметров класса-шаблона аналогичен списку параметров функции-шаблона: список классов и переменных, которые подставляются в объявление класса при генерации конкретного класса. n Очень часто шаблоны используются для создания коллекций ( классов, которые представляют собой набор объектов одного и того же типа). n Простейшим примером коллекции может служить массив. n У массива имеется ряд существенных недостатков: 1) необходимость задавать размер массива при его определении 2) отсутствие контроля использования значений индексов при обращении к атрибутам массива. n Пример. При помощи шаблонов устранить два отмеченных недостатка у одномерного массива. При этом по возможности необходимо сохранить синтаксис обращения к атрибутам массива. n Пусть новая структура данных vector. Тогда template <class T> void remove(void) n Кроме конструктора и деструктора, у нашего вектора есть только три метода: метод insert добавляет в конец вектора новый элемент, увеличивая длину вектора на единицу, метод remove удаляет последний элемент вектора, уменьшая его длину на единицу, и операция [ ] обращается к n-ому элементу вектора. vector<int> IntVector; n Если операция [ ] используется справа от операции присваивания (в первых двух присваиваниях), то используется ее константный вариант, если слева (в последнем присваивании) – неконстантный. n Использование операции индексирования [ ] слева от операции присваивания означает, что значение объекта изменяется, соответственно, нужна неконстантная операция. n Параметр шаблона vector – любой тип, у которого определены операция присваивания и стандартный конструктор. n Так же, как и с функциями-шаблонами, при задании первого объекта типа vector<int> автоматически происходит генерация конкретного класса из шаблона. n Если далее в программе будет использоваться вектор вещественных чисел или строк, значит, будут сгенерированы конкретные классы и для них. n Генерация конкретного класса означает, что генерируются все его методы, соответственно, размер исходного кода растет. Поэтому из небольшого шаблона может получиться большая программа.
|