调用规则:
- 如果函数模板和普通函数都可以实现需要的功能,那么优先调用普通函数。
- 可以通过空模板参数列表来强制调用函数模板。
- 函数模板也可以发生重载。
- 如果函数模板可以产生更好的匹配,那么会优先调用函数模板。
示例:
#include <iostream>
using namespace std;
int myAdd(int a,int b){
cout << "普通函数的调用" << endl;
return a + b;
}
template<typename T>
T myAdd(T a,T b){
cout << "模板函数的调用" << endl;
return a + b;
}
template<typename T>
T myAdd(T a,T b,T c){
cout << "模板函数的调用"<< endl;
return a + b + c;
}
int main(){
int a = 10;
int b = 20;
int c = 30;
string str1 = "hello,";
string str2 = "world";
cout << myAdd(a,b) << endl;
cout << myAdd<>(a,b) << endl;
cout << myAdd(a,b,c) << endl;
cout << myAdd(str1,str2) << endl;
system("pause");
return 0;
}