函数模板与普通函数

版权声明:本文为博主原创文章,未经博主允许不得转载。 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、当函数模板和普通函数同时存在时,若不显示指定<类型>   =>若普通函数和函数模板都严格匹配则调用普通函数;
                                                                                                   =>若只有函数模板严格匹配则调用函数模板
                                                                                                   =>若只用普通函数严格匹配则调用普通函数
                                                                                                   =>若两者都不严格匹配则调用普通函数

函数模板在被调用时根据具体的类型生成不同的模板函数(模板的实例化)

猜你喜欢

转载自blog.csdn.net/Legends_Never_Die/article/details/82908224