Если алгоритм не зависит от типа
данных, то его нужно реализовать в виде шаблонов функций.
Шаблон применяется для одинаковых действий на данными разных типов.
Перегруженные функции применяются для оформления действий
аналогичных по названию, но различных по реализации.
Формат шаблона
имеет вид
Template <class Type> Тип имя ([cписок парааметров])
{ /тело функции*/}
Идентификатор Type задает параметризованный тип, который
используется как в заголовке, так и теле функции. Это фиктивное имя
заменяется на реальный тип при работе транслятора.
Процесс создания конкретной версии функции называется созданием
экземпляра функции. Известно два способа создания экземпляров
функций:
1) явный- когда все параметризированные типы заменяются на известные
в данный момент типы,
2) неявный- когда создание экземпляра функции происходит в момент
фактического вызова функции.
Пример:
Программа, определяющая максимальный элемент в массивах разного типа.
#include <iostream.h>
#include <string.h>
template <class T> TMax (T *b,int n);
int main()
{
const int n=20;
int i,b[n];
cout<<”ïnput”<<n<<”integer”<<endl;
for (i=0;i<n;i++)cin>>b[i];
cout<<Max(b,n)<<endl;
double a[]={0.22,117.2,-0.08,0.21,42.5};
cout<<Max(a,5)<<endl;
char *str=”This is a proba”;
cout<<Max*strlen(str))<<endl;
return 0;
}
template <class T) TMax(T *b,int n){
int imax=0;
for(int i=1;i<n;i++)
if(b[i]>b[imax])imax=I;
return b[imax];}