1、函数模板
语法:
template<typename T>
函数声明或定义
解释:
template --- 声明创建模板
typename --- 表面其后面的符号是一种数据类型,可以用class代替通用的数据类型,名称可以替换,通常为大写字母T -- 通用的数据类型,名称可以替换,通常为大写字母
#include <iostream> using namespace std; #include <string>//函数模板 template<typename T>//声明一个模板,告诉编译器后面代码中紧跟着的T不要报错,T是一个通用数据类型 void mySwap(T& a, T& b) {T temp = a;a = b;b = temp; }int main() {int a = 10;int b = 20;//利用函数模板交换//两种方式使用函数模板//1.自动类型推导mySwap(a, b);//2.显示指定类型mySwap<int>(a, b);system("pause");return 0; }
注意事项:
- 自动类型推导,必须推导出一致的数据类型T,才可以使用。
- 模板必须要确定出T的数据类型,才可以使用
#include <iostream> using namespace std; #include <string>template<class T> //typename可以替换成class void mySwap(T& a, T& b) {T temp = a;a = b;b = temp; }//1.自动类型推导,必须推导出一致的数据类型T, 才可以使用。 void test01() {int a = 10;int b = 20;char c = 'c';//mySwap(a, b);//正确!//mySwap(a,c)//错误!推导不出一致的T类型}//2.模板必须要确定出T的数据类型,才可以使用 template<class T> void func() {cout << "func 的调用" << endl; }void test02() {//func();//错误func<int>();//正确 }int main() {test01();system("pause");return 0; }