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; }