普通函数与函数模板的区别:
1.普通函数调用时可以发生自动类型转换(隐式类型转换)
2.函数模板调用时,如果利用自动类型推导,不会发生隐式类型转换
3.函数模板调用时,如果利用显示指定类型,可以发生隐式类型转换
1 #include <iostream> 2 using namespace std; 3 4 //普通函数与函数模板的区别 5 6 //1.普通函数调用可以发生隐式类型转换 7 int myAdd1(int a, int b) 8 { 9 return a + b; 10 } 11 12 //2.函数模板 13 template<class T> 14 T myAdd2(T a,T b) 15 { 16 return a + b; 17 } 18 19 void test_01(void) 20 { 21 int a = 10; 22 int b = 20; 23 char c = ‘c‘; 24 25 //cout << myAdd1(a, c) << endl;//编译器自动地把‘c‘转换成ASCII码,a-97,c-99 26 27 //自动类型推导 不会发生隐式转换 28 //cout << myAdd2(a, c) << endl;//报错 29 30 //显示指定类型 会发生隐式转换 31 cout << myAdd2<int>(a, c) << endl; 32 } 33 34 int main(void) 35 { 36 test_01(); 37 38 system("pause"); 39 return 0; 40 }
建议:调用函数模板时,建议使用显示指定类型
原文:https://www.cnblogs.com/huanian/p/12781614.html