1. 程式人生 > >函式模板與普通函式

函式模板與普通函式

函式模板呼叫時可以不顯示指定<型別>

兩者的呼叫機制:

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、當函式模板和普通函式同時存在時,若不顯示指定<型別>   =>若普通函式和函式模板都嚴格匹配則呼叫普通函式;
                                                                                                   =>若只有函式模板嚴格匹配則呼叫函式模板
                                                                                                   =>若只用普通函式嚴格匹配則呼叫普通函式
                                                                                                   =>若兩者都不嚴格匹配則呼叫普通函式

函式模板在被呼叫時根據具體的型別生成不同的模板函式(模板的例項化)