Параметр class у шаблона
Параметр class используется в объявлении шаблона
для того, чтобы указать, что шаблон принимает
тип в качестве своего аргумента. В первом параметре
мы передаем ключевое слово class, а во втором -
имя параметра, который будет обозначать этот тип.
Внутри шаблона имя параметра можно использовать
так же, как и любой другой тип.
Синтаксис
template <class T>
// объявление шаблона
Пример
Давайте создадим шаблонную функцию printType,
которая принимает один параметр типа T
и выводит его значение:
#include <iostream>
using namespace std;
template <class T>
void printType(T value)
{
cout << value << endl;
}
int main()
{
printType(123);
printType("abcde");
return 0;
}
Результат выполнения кода:
123
"abcde"
Пример
Параметр class можно использовать
и в шаблонных классах. Давайте создадим
класс Box, который хранит значение
произвольного типа:
#include <iostream>
using namespace std;
template <class T>
class Box
{
private:
T value;
public:
Box(T v) : value(v) {}
T getValue()
{
return value;
}
};
int main()
{
Box<int> box1(123);
Box<string> box2("abcde");
cout << box1.getValue() << endl;
cout << box2.getValue() << endl;
return 0;
}
Результат выполнения кода:
123
"abcde"
Пример
В одном шаблоне можно объявить несколько
типовых параметров. Давайте создадим
шаблонную функцию printPair, которая
принимает два значения разных типов:
#include <iostream>
using namespace std;
template <class T, class U>
void printPair(T first, U second)
{
cout << first << " " << second << endl;
}
int main()
{
printPair(123, "abcde");
printPair("abcde", 3.14);
return 0;
}
Результат выполнения кода:
"123 "abcde""
""abcde" 3.14"
Смотрите также
-
ключевое слово
typename,
которое также объявляет типовой параметр шаблона -
ключевое слово
template,
которое объявляет шаблон -
конструкция
template class,
которая создает шаблонный класс -
конструкция
specialization,
которая создает специализацию шаблона