46.20K
Category: programmingprogramming

Shablony_v_S

1.

Шаблоны в С++

2.

Задача: минимум из двух чисел
• int min( int a, int b )
{ return a < b ? a : b; }
• double min( double a, double b )
{return a < b ? a : b;}
• float min(float a, float b )
{return a < b ? a : b;}

3.

• Шаблоны — средство языка C++,
предназначенное для
кодирования обобщённых алгоритмов, без
привязки к некоторым параметрам
(например, типам данных, размерам
буферов, значениям по умолчанию).
• Упрощает код
• При компиляции создается экземпляр с
указанием заданного типа
• Шаблон класса и шаблон функции

4.

Шаблон функции
#include<iostream>
template <class Type1> Type1 min (Type1
a, Type1 b) {return a < b ? a : b; }
int main()
{
std::cout<<min<int> (3,5)<<std::endl;
std::cout<<min<double> (3.2,5.5);
return 1;
}

5.

Несколько различных типов
#include<iostream>
template <class Type1, class Type2 > void
min (Type1 a, Type2 b) {std::cout << (a < b ?
a : b)<<std::endl; }
int main()
{
min<int, int> (3,5);
min<double,int> (3.2,5);
min<double,int> (3.2,1);
return 1;
}

6.

• template <typename Type1> Type1 min
(Type1 a, Type1 b) {return a < b ? a :
b; }
• Ключевое слово typename говорит о том, что в
шаблоне будет использоваться встроенный тип
данных, такой как: int, double,float, char и т. д. А
ключевое слово class сообщает компилятору, что в
шаблоне функции в качестве параметра будут
использоваться пользовательские типы данных,
тоесть классы.

7.

Шаблон класса
#include<iostream>
template <class Type1,
class Type2 > class A
{
Type1 a;
Type2 b;
public:
A(Type1 a, Type2 b)
{
this->a=a;
this->b=b;
}
A()
{
std::cout<<"enter a
and b:";
std::cin>>a>>b;
}
voidprint()
{
std::cout<<a<<"
"<<b;
}
};
int main()
{
A<int,int> a(3,5);
a.print();
return 1;
}
English     Русский Rules