С++. Шаблоны Сидоренко Иван
Введение Шаблоны обеспечивают поддержку обощенного программирования. Пример: template class Temp { T val; public: Temp( T); T getVal() const; } Temp it; class A {}; Temp at; template T Temp ::getVal() const { return val; } void f() { Temp it; Temp at; }
Параметры шаблонов Параметр – константа или тип. Пример: template class Buffer { T v[max]; public: Buffer(); }; void f( int i) { Buffer buf; // ошибка }
Эквивалентность типов При использовании одного и того же набора аргументов шаблона, мы всегда получаем один и тот же тип. typedef char myChar; string s1; string s2; string s3; string s4; buffer b1; buffer b2;
Шаблоны функций Пример: template void f( T var) {…} Перегрузка шаблонов функций template T func(T, T); template complex func( complex, T); double func( double, double); func(1.2, 1); // ошибка, неоднозначность