//函数模板template<classT>
T MyPlus(T a, T b){
T ret = a + b;return ret;}//普通函数intMyPlus(int a,int b){int ret = a + b;return ret;}// 1 编译器优先考虑普通函数// 2 可以通过空模板实参列表的语法限定编译器只能通过模板匹配// 4 如果函数模板可以产生一个更好的匹配,那么选择模板voidtest01(){int a =10;int b =20;char c ='a';char d ='b';//如果函数模板和普通函数都能匹配,c++编译器优先考虑普通函数
cout <<MyPlus(a, b)<< endl;//如果我必须要调用函数模板,那么怎么办? 可以使用空模板参数列表<>
cout << MyPlus<>(a, b)<< endl;//此时普通函数也可以匹配,因为普通函数可以自动类型转换//但是此时函数模板能够有更好的匹配//如果函数模板可以产生一个更好的匹配,那么选择模板
cout <<MyPlus(c,d);}// 3 函数模板可以像普通函数那样可以被重载//函数模板重载template<classT>
T MyPlus(T a, T b, T c){
T ret = a + b + c;return ret;}voidtest02(){int a =10;int b =20;int c =30;
cout <<MyPlus(a, b, c)<< endl;//如果函数模板和普通函数都能匹配,c++编译器优先考虑普通函数}
c++模板--函数模板和普通函数在一起调用规则1 函数模板和普通函数在一起调用规则1 函数模板和普通函数在一起调用规则c++编译器优先考虑普通函数可以通过空模板实参列表的语法限定编译器只能通过模板匹配函数模板可以像普通函数那样可以被重载如果函数模板可以产生一个更好的匹配,那么选择模板//函数模板template<class T>T MyPlus(T a, T b){ T ret = a + b; return ret;}//普通函数int MyPlus(int