C++中函数模板的理解
一.函数模板(function Template)
所谓函数模板,实际上就是建立一个通用函数。
*函数定义时不指定具体的数据类型(使用虚拟类型代替),被调用时才知道数据的类型。
*函数被调用时编译器根据实参反推数据类型-类型的参数化。
形式如下
//模板头与函数声明/定义永远是不可分割的整体
template <typename 类型参数1 , 类型参数2 ,...> typename也可改为class,早期的C++是用class
返回值类型 函数名(形参列表){
//在函数体中可以使用类型参数
}
下面看一个小例子,用一个模板函数去实现不同类型的数据交换。
13 #include<iostream>
14
15 using namespace std;
16 //书写函数模板
17 template <typename T> void Swap(T& , T&);
18
19 int main(int argc , char **argv)
20 {
21 int a =3 , b = 5;
22 double c = 2.4 , d = 4.8;
23 cout << "交换前:";
24 cout << a << '\t' << b << endl;
25 Swap(a , b);
26 cout << "排序后:";
27 cout << a << '\t' << b << endl;
28 cout << "排序前:";
29 cout << c << '\t' << d <<endl;
30 Swap(c , d);
31 cout << "排序后:";
32 cout << c << '\t' << d <<endl;
33
34 return 0;
35
36 }
37
38 template <typename T>
39 void Swap(T &a , T &b)
40 {
41 T temp = a;
42 a = b;
43 b = temp;
44 }
模板函数适合函数结构一样或者类似,都可以兼容的,我们只需要给他传递不同的数据类型。
还有就是函数模板和函数重载并不是替换的关系,
函数模板适合用于函数名和函数结构一样,且都可以兼容的。
重载函数也是相同的函数名,但是他可以实现不同的业务需求。

浙公网安备 33010602011771号