普通函数与函数模板的区别
1.普通函数调用可以发生隐式类型转换
#include<iostream>
using namespace std;
//1.普通函数调用可以发生隐式类型转换
int add(int a, int b)
{
return a + b;
}
int main()
{
int a = 10;
int b = 20;
char c = 'a'; //a对应的ascall码为97
//将字符c转化为ascall对应的数值与变量a相加
cout << add(a, c) << endl;
cout << add(a, b) << endl;
system("pause");
return 0;
}
2.函数模板用自动类型推导,不会发生隐式类型转化
#include<iostream>
using namespace std;
template<class T>
int add(T a, T b)
{
return a + b;
}
int main()
{
int a = 10;
int b = 20;
char c = 'a'; //a对应的ascall码为97
//自动类型推导
cout<<add(a, b) << endl;
cout << add(a, c) << endl; //会报错,因为不会执行隐式类型转化
system("pause");
return 0;
}
3.函数模板用显示指定类型,可以发生隐式类型转化
#include<iostream>
using namespace std;
template<class T>
int add(T a, T b)
{
return a + b;
}
int main()
{
int a = 10;
int b = 20;
char c = 'a'; //a对应的ascall码为97
//显示指定类型
cout << add<int>(a, c) << endl; //会执行隐式类型转化
system("pause");
return 0;
}