Skip to content

7.Шаблоны функций и классов в С . Специализация шаблонов частичная и полная.

Maksim edited this page Jun 15, 2018 · 1 revision

Проверка шаблона на корректность происходит только при его использовании. В зависимости от передаваемых параметров шаблон может работать корректно или некорректно. Однако, шаблоны достаточно полезны – если есть несколько функций, совершающих одни и те же действия над разными объектами, можно написать шаблон функции. Шаблон задает функцию для работы с разными типами данных.

template<classT> T inc(T &i, T di)
{
	return i += di;
}

int i=0;
inc(i,5);
double d=3.2;
inc(d,1.1);

Допускается выделять базовый класс вне шаблона; шаблон же будет производной от него. На уровне же шаблона необходимо будет реализовывать только операции для передачи данного, транзитные операции (данное принимается, куда-то передаётся, а там где начинаем работать – работаем уже конкретное приведение типа со специализацией). Таким образом решается проблема классов-посредников.

class A {};
template <typename T> //использование в шаблоне базового класса
class B: public A
{
public:
	int f();
};
template<typename T>
int B<T>::f()
{
}

Методы шаблонного класса являются опять-таки шаблонами, определять их надо как шаблоны!

Ошибки в шаблонах могут сидеть чрезвычайно долго! Шаблоны хороши только при локальном использовании!

Clone this wiki locally