-
Notifications
You must be signed in to change notification settings - Fork 1
7.Шаблоны функций и классов в С . Специализация шаблонов частичная и полная.
Проверка шаблона на корректность происходит только при его использовании. В зависимости от передаваемых параметров шаблон может работать корректно или некорректно. Однако, шаблоны достаточно полезны – если есть несколько функций, совершающих одни и те же действия над разными объектами, можно написать шаблон функции. Шаблон задает функцию для работы с разными типами данных.
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()
{
}
Методы шаблонного класса являются опять-таки шаблонами, определять их надо как шаблоны!