Назначение **шаблона** - повышение повторного использования кода. ## Шаблонные классы ```cpp template class pixel { public: T get_x() const; static T d; } template T pixel::get_x() const { return x; } pixel t1, t2(2, 2, "red", 2), t3(t2), *p; pixel k1, k2(3.0, 4.0, "цвет", 5.0), k3(k2), *pp; pixel ... pixel ... ``` ## Шаблонные функции ```cpp template void copy(T a[], T b[], int k) { for (int i = 0; i < k; i++) a[i] = b[i]; int i1[50], i2[50]; float d1[10], d2[20]; char c1[100], c2[30]; char* p1; char* p2; copy(i1, i2, 10); copy(d1, d2, 20); copy(c1, c2, 5); copy(i1, d2, 10); copy(p1, i1) } ``` Если в классе есть другая функция и она не использует шаблон, то компилятор определяет ее 1 раз. Если использует - то компилятор будет ее определять многократно.