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 << '	' << b << endl;
25     Swap(a , b);
26     cout << "排序后:";
27     cout << a << '	' << b << endl;
28     cout << "排序前:";
29     cout << c << '	' << d <<endl;
30     Swap(c , d);
31     cout << "排序后:";
32     cout << c << '	' << 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 }          

模板函数适合函数结构一样或者类似,都可以兼容的,我们只需要给他传递不同的数据类型。

还有就是函数模板和函数重载并不是替换的关系,

函数模板适合用于函数名和函数结构一样,且都可以兼容的。

重载函数也是相同的函数名,但是他可以实现不同的业务需求。

原文地址:https://www.cnblogs.com/tanshengjiang/p/13311310.html