普通函数与函数模板的区别(4)

普通函数与函数模板的区别:

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 }

建议:调用函数模板时,建议使用显示指定类型

posted @ 2020-04-26 18:53  坦率  阅读(184)  评论(0)    收藏  举报