版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Legends_Never_Die/article/details/82908224
函数模板调用时可以不显示指定<类型>
两者的调用机制:
1、当只有函数模板时直接调用函数模板,以下四种方式均可
template<class T>
T f(T );
using namespace std;
int main()
{
double a=2.1;
cout<<f<double>(a);//cout<<f<>(a);//cout<<f<int>(a);//cout<<f(a);
return 0;
}
template <class T>
T f(T a)
{
T mul=a*a;
return mul;
}
2、当函数模板和普通函数同时存在时,若显示指定<类型>则调用函数模板
3、当函数模板和普通函数同时存在时,若不显示指定<类型> =>若普通函数和函数模板都严格匹配则调用普通函数;
=>若只有函数模板严格匹配则调用函数模板
=>若只用普通函数严格匹配则调用普通函数
=>若两者都不严格匹配则调用普通函数
函数模板在被调用时根据具体的类型生成不同的模板函数(模板的实例化)