C++模板的使用
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 }
总结:
- 函数模板利用关键字 template
- 使用函数模板有两种方式:自动类型推导、显示指定类型
- 模板的目的是为了提高复用性,将类型参数化
3、使用函数模板的注意事项
- 自动类型推导时必须推导出数据的一致性T才能使用
- 模板必须确定出T的数据类型才能使用(即使没用使用数据类型T)
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 }

浙公网安备 33010602011771号