Шаблоны функций и классов

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

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

На пример список. Список может быть для чего угодно.

Построение шаблонов рассмотрим на примере. Необходимо написать функцию расчёта куба для аргумента. (Cub()).


#include<iostream.h>

#include<math.h>

template <class T>

T cub(T x)

{ return x*x*x;}

template <class SwapType>

void Swap(SwapType &x,SwapType &y)

{ SwapType tmp;

tmp=x;

x=y;

y=tmp;

}

template <class T1,class T2>

T1 max(T1 x,T2 y)

{

if(x>y)return x;

Else return y;

}

Void main(void)

{

int i=3;

float f=3.12;

double x=3.1e2;

cout<<"//целое "<<cub(i)<<endl;

cout<<"//вещественное "<<cub(f)<<endl;

cout<<"//двойной точности "<<cub(x)<<endl;

char ch1='a',ch2='z';

cout<<"//1-- "<<ch1<<" 2-- "<<ch2<<endl;

Swap(ch1,ch2); cout<<"//переставили "<<endl;

cout<<"//1-- "<<ch1<<" 2-- "<<ch2<<endl;

int c1=0,c2=9;

cout<<"//1-- "<<c1<<" 2-- "<<c2<<endl;

Swap(c1,c2); cout<<"//переставили "<<endl;

cout<<"//1-- "<<c1<<" 2-- "<<c2<<endl;

cout<<"//max из int "<<c1<<" и int "<<c2<<" = "<<max(c1,c2)<<endl;

cout<<"//max из char "<<ch1<<" и char "<<ch2<<" = "<<max(ch1,ch2)<<endl;

cout<<"//max из int "<<i<<" и float "<<f<<" = "<<max(f,i)<<endl;

}

//целое 27

//вещественное 30.3713

//двойной точности 2.9791e+07

//1-- a 2-- z

//переставили

//1-- z 2-- a

//1-- 0 2-- 9

//переставили

//1-- 9 2-- 0

//max из int 9 и int 0 = 9

//max из char z и char a = z

//max из int 3 и float 3.12 = 3.12


Шаблоны классов.

Шаблон класса представляет собой скелет обобщённого класса. Ситаксис такой:

Template< список_аргументов_шаблона>

{

//тело класса

};

Каждый аргумент в списке является либо объявлением типа float a; либо идентификатором класса class T. Из-за этого определение функции-метода шаблонного класса имеет вид:

Template< список_аргументов_шаблона>

Тип_результата имя_класса < список_аргументов_шаблона>::








Дата добавления: 2015-12-26; просмотров: 700;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.007 сек.