T是泛型类型是指定关键字class或关键字typename在模板参数列表中没有差异(他们是100%个同义词在模板声明)。
在上面的代码中,宣布一些形式(在方括号中的模板参数的泛型)允许一些形式被用在函数定义的任何地方,就像任何其他类型;它可以作为参数类型,返回类型,或声明该类型的新变量。在所有的情况下,它代表了一个泛型类型将确定在矩模板实例化。
实例化一个模板应用该模板使用特定类型或值的模板参数创建一个函数。这是通过调用函数模板,具有相同的语法调用一个普通的功能,但指定模板参数括在尖括号:
<模板参数名称>(函数)
例如,上面定义的函数模板可以被称为:
x = sum<int>(10,20);
功能和< int >是一个函数模板实例化和可能的。在这种情况下,通过使用int作为调用模板参数,编译器会自动实例化的版本和每个发生的一些形式取而代之的是int,如果它被定义为:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// function template
#include <iostream>
using namespace std;
template <class T>
T sum (T a, T b)
{
T result;
result = a + b;
return result;
}
int main () {
int i=5, j=6, k;
double f=2.0, g=0.5, h;
k=sum<int>(i,j);
h=sum<double>(f,g);
cout << k << '\n';
cout << h << '\n';
return 0;
}