Читайте также: |
|
Шаблон класса задает способ построения отдельных класов. Шаблоны класса vector:
template <class T> class vector {private:T* fitems; int fcount; public: vector(int);T& operator[](const int index);T&getitem(const int index){... return fitems[index];}; Префикс template <class T> указывает, что объявл шаблон с типовым парамом Т. Теперь посредством замены типового парама конкретным типом можно образовать конкретный класс, кот далее может использоваться для описания переменых, как и любой др тип даных: Класс, сгенерированый из шаблона явл совершено нормальным класом. Поэтому исп-ние шаблона не подразумевает каких-либо дополнительных механизмов (и связаных с ними расходов памяти и времени) на этапе выполнения проги по сравнению с тем, что использовалось бы, если бы необходимый конкретный класс был написан «вручную». С др стороны, исп-ние шаблонов не подразумевает обязательного уменьшения объема объектного кода. Компоненты шаблона объявл и описываются точно так же, как и компоненты обычного класса, т.е. либо внутри, либо вне класса. Компонентная функция шаблона класса явл шаблоном функции, парамизованом парамами шаблона класса. Ее внешнее описание осуществляется согласно следующему синтаксису: template <список-парамов-шаблона> тип-рез-та имя-шаблона-класса<список-парамов-шаблона>::описание-функции.Процес генерации объявления конкретного класса из шаблона класса - конкретизация шаблона (template instantiation). Класс, сгенерированый из шаблона (напр, класс, обозначаемый именем vector<int>), назется шаблоным класом (template class). Парамами шаблонов класов могут быть типовые парамы, обычные парамы и парамы-шаблоны. При конкретизации шаблона типы фактических парамов отождествляются с соответствующими (по порядку) типами из списка-парамов-шаблона и должны соответствовать им по кол-ву. У шаблона может быть несколько парамов. Парам шаблона может быть использован для описания следующих парамов. Парамы целого типа обычно исп-ются для задания размеров и границ. Простые контейнеры с ограничеными возможностями могут быть полезными, когда компактность кода и эфективность во время выполнения проги имеют первостепеное значение. Передача размера буфера в качестве аргумента шаблона позволяет его разработчику избежать использования лишней памяти. Арг-ты целого типа всегда должны быть константными выражениями. Нетиповый парам шаблона явл константой в теле шаблона, и потому попытка изменения его значения явл ошибкой.
Дата добавления: 2015-01-29; просмотров: 31 | Поможем написать вашу работу | Нарушение авторских прав |