лекции программирование / polevoy_cpp_2012_spring_lecture_04
.pdfПреимущества шаблонов
•автоматическая генерация кода
•оптимизация программ
•использование типа при определении функции или класса
•зависит только от тех параметров типа, которые использует
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 |