模板分为函数模板和类模板
函数模板
模板的语法
建立一个通用函数,其函数返回值类型和形参类型可以不具体制定
1 template<typename T> 2 void mySwap(T& a, T& b) { 3 T temp = a; 4 a = b; 5 b = temp; 6 } 7 int main() { 8 int a = 10; 9 int b = 20; 10 //自动类型推导 11 /*mySwap(a, b);*/ 12 //显示指定类型 13 mySwap<int>(a, b); 14 cout << "a=" << a << endl; 15 cout << "b=" << b << endl; 16 system("pause"); 17 return 0; 18 }
函数模板的注意事项
- 自动类型推导,必须推导出一致的数据类型T,才能使用
- 模板必须要确定出T的数据类型才能够使用
1 template<typename T> 2 void fun() { 3 4 } 5 int main() { 6 fun<int>(); 7 system("pause"); 8 return 0; 9 }
一个template只能对应一个函数模板
普通函数与模板函数的区别
- 普通函数调用时可以发生自动类型转换(隐式类型转换)
- 函数模板调用时,如果利用自动类型推导,不会发生隐式类型转换
- 如果利用显示指定类型的方式,可以发生隐式类型转换
1 template<typename T1> 2 void mySwap1(T1 a, T1 b) { 3 T1 temp = a; 4 a = b; 5 b = temp; 6 } 7 void mySwap2(int a, int b) { 8 int temp = a; 9 a = b; 10 b = temp; 11 } 12 void fun() { 13 14 } 15 int main() { 16 int a = 10; 17 int b = 20; 18 char c = 'a'; 19 /*mySwap1(a, c);*///报错,不能发生隐式类型转换 20 mySwap1<int>(a, c); 21 mySwap2(a, c); 22 system("pause"); 23 return 0; 24 }
标签:类型转换,函数,temp,int,void,C++,模板 From: https://www.cnblogs.com/Sandals-little/p/17467139.html