函式模板與普通函式
阿新 • • 發佈:2019-01-08
函式模板呼叫時可以不顯示指定<型別>
兩者的呼叫機制:
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、當函式模板和普通函式同時存在時,若不顯示指定<型別> =>若普通函式和函式模板都嚴格匹配則呼叫普通函式;
=>若只有函式模板嚴格匹配則呼叫函式模板
=>若只用普通函式嚴格匹配則呼叫普通函式
=>若兩者都不嚴格匹配則呼叫普通函式
函式模板在被呼叫時根據具體的型別生成不同的模板函式(模板的例項化)