1、优先调用普通函数
2、通过空模板参数列表,强制调用函数模板
3、函数模板可以发生重载
4、若函数模板可以产生更好的匹配,优先调用函数模板
#include<iostream>
using namespace std;
//1、优先调用普通函数
//2、通过空模板参数列表,强制调用函数模板
//3、函数模板可以发生重载
//4、若函数模板可以产生更好的匹配,优先调用函数模板
//普通函数
int myAdd(int a,int b)
{
cout<<a+b<<endl;
return a+b;
}
//函数模板
template<typename T>
T myAdd(T a,T b)
{
cout<<a+b<<endl;
return a+b;
}
template<typename T>
T myAdd(T a,T b,T c)
{
cout<<a+b+c<<endl;
return a+b+c;
}
void test01()
{
int a=10;
int b=20;
myAdd(a,b);
//通过空模板参数列表,强制调用函数模板
myAdd<>(a,b);
//函数重载
int c=5;
myAdd(a,b,c);
//函数模板有更好的匹配,优先调用函数模板
char c1='a';
char c2='b';
myAdd(c1,c2);
}
int main()
{
test01();
return 0;
}