#include <iostream>
#include <string>
using namespace std;template<typename T>
void myPrint(T a, T b){cout << "函数模板的调用" << endl;
}void myPrint(int a, int b){cout << "普通函数调用" << endl;
}template<typename T>
void myPrint(T a, T b, T c){cout << "函数模板的调用cccccccc" << endl;
}int main()
{int a = 1;int b = 2;int c = 3;// 1.函数模板和普通函数都可以调用时,优先执行普通函数// myPrint(a,b);// 2.如果就想调用函数模板,可以使用空模板参数列表// myPrint<>(a,b);// 3.函数模板可以重载// myPrint(a,b,c);// 4.如果模板可以产生更好的匹配,就会优先执行函数模板char d = 'd';char f = 'f';myPrint(d, f);return 0;
}
函数模板和普通函数在一起调用规则
- c++编译器优先考虑普通函数
- 可以通过空模板实参列表的语法限定编译器只能通过模板匹配
- 函数模板可以像普通函数那样可以被重载
- 如果函数模板可以产生一个更好的匹配,那么选择模板