1、什么是模板
模板最大的作用就在于可以建立一个通用的架构提高代码的复用性,就比如我们在网上下载的PPT模板就可以使用外观把内容更换成我们自己的内容。
2、函数模板(也叫泛型编程)
C++提供两种模板机制:函数模板和类模板
2.1 函数模板的语法
作用:建立一个通用模板,函数返回值类型可以在使用时指定。
语法:
1 template<typename T> //模板函数的申明
template:申明创建模板
typename:表明后面的符号是一种数据类型,也可用class代替
T:数据类型名称,可以用其它字母替换。
比如有两个函数实现方法一样只是函数参数类型不一样
1 void swapInt(int &a, int &b) //整数交换 2 { 3 int temp = a; 4 a = b; 5 b = temp; 6 } 7 void swapDouble(double &a, double &b) //浮点数交换 8 { 9 double temp = a; 10 a = b; 11 b = temp; 12 }
如果使用模板就不需要定义两个函数,在使用函数的时候再定义函数的类型
在指定函数时可以使用函数推导或显示指定函数类型
1 //函数模板语法 2 template<typename T> 3 4 void Swap(T &a, T &b) 5 { 6 T temp = a; 7 a = b; 8 b = temp; 9 } 10 void test01() 11 { 12 int a = 10; 13 int b = 20; 14 //Swap(a, b); //自动类型推导 15 //显示指定类型 16 Swap<int>(a, b); 17 cout << a << endl; 18 cout << b << endl; 19 20 }
总结:
3、使用函数模板的注意事项
1 int a = 10; 2 int b = 20; 3 char c = 'c'; 4 //显示指定类型 5 Swap<int>(a, c); //传入数据类型不一致可能会报错
1 template<typename T> 2 void func() 3 { 4 cout << "func()函数调用" << endl; 5 } 6 void test01() 7 { 8 func<int>(); //当使用了模板即使没有用到数据类型T时在使用时也必须传入一个数据类型才能调用。 9 10 }