普通函数与函数模板的区别
- 普通函数调用时可以发生自动类型转换(隐式类型转换)
- 函数模板调用时,如果利用自动类型推导,不会发生隐式类型转换
- 如果利用显示指定类型的方式,可以发生隐士类型转换
1. 代码示例:
#include <iostream>
#include <vector>
using namespace std;
// 1.普通函数会自动进行隐式转换
int test01(int a, char c){
return a+c;
}
// 2.函数模板(不可以进行类型转换)
template<class T>
T test02(T a, T b){
return a+b;
}
int main(){
int a = 10,b=20;
char c = 'c'; // c的ASCII码为99,因此10+99=109
cout << "普通函数(自动类型推导):" << test01(a,c) << endl;
cout << "函数模板(不会进行类型推导):" << test02(a,b) << endl;
cout << "函数模板(不会进行类型转换,可以显示指定类型):" << test02<int>(a,c) << endl;
return 0;
}
2. 运行结果