Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лекции программирование / polevoy_cpp_2012_spring_lecture_04

.pdf
Скачиваний:
26
Добавлен:
20.04.2015
Размер:
112.14 Кб
Скачать

Преимущества шаблонов

автоматическая генерация кода

оптимизация программ

использование типа при определении функции или класса

зависит только от тех параметров типа, которые использует

03.03.2012

www.cppNewb.ru

11

Инстанциирование шаблона

генерация объявления функции (класса) по шаблону функции (класса) и аргументам шаблона

осуществляется компилятором на этапе компиляции

сгенерированный код подчиняется стандартным правилам

03.03.2012

www.cppNewb.ru

12

Шаблонная функция

определяется шаблоном и набором параметров

03.03.2012

www.cppNewb.ru

13

Шаблонный класс (тип)

определяется шаблоном и набором параметров

при использовании одного набора

параметров генерируется один и тот же тип (эквивалентные типы)

03.03.2012

www.cppNewb.ru

14

Шаблонный класс (пример)

template<class T> class CStack

{

public:

CStack();

T getTop(); private:

T* m_pData;

};

03.03.2012

www.cppNewb.ru

15

Параметры шаблонов

тип (типизированный параметр)

константа времени компиляции (нетипизированный параметр)

другие шаблоны

м.б. несколько

03.03.2012

www.cppNewb.ru

16

Шаблоны членов и методов класса

шаблон класса может иметь шаблонные члены и шаблонные методы

нешаблонный класс может иметь шаблонные методы

03.03.2012

www.cppNewb.ru

17

Нетипизированный параметр

известное на стадии компиляции целочисленное значение (литерал или выражение)

адрес объекта

функция с внешней компоновкой

неперегружаемый указатель на член

03.03.2012

www.cppNewb.ru

18

Нетипизированный параметр (пример)

template<class T, size_t N> class CArr

{

private:

T m_data[N];

};

CArr<int, 128> members;

03.03.2012

www.cppNewb.ru

19

Типизированный параметр

фундаментальный тип

пользовательский тип

шаблонный тип

03.03.2012

www.cppNewb.ru

20