模板函数格式
template <class T>
void allexchange(T a,T b)
{T c;c=*a;*a=*b;*b=c;
}
模板函数可以增强函数的通用性
举例说明,使用一个模板函数实现了两个的函数的功能
#include "iostream"using namespace std;void myexchangeint(int* a,int* b)
{int c;c=*a;*a=*b;*b=c;
}void myexchangestring(string* a,string* b)
{string c;c=*a;*a=*b;*b=c;
}template <class T>
void allexchange(T a,T b)
{T c;c=*a;*a=*b;*b=c;
}int main()
{int a=10;int b=20;string c="hello";string d="world";cout << a << endl;cout << b << endl;cout << c << endl;cout << d << endl;myexchangeint(&a,&b);myexchangestring(&c,&d);cout << a << endl;cout << b << endl;cout << c << endl;cout << d << endl;allexchange(&a,&b);allexchange(&c,&d);cout << a << endl;cout << b << endl;cout << c << endl;cout << d << endl;
}
模板函数存在多形参情况,如果类型不同会推导失败
解决办法一,限定类型
#include "iostream"using namespace std;
template <class T>
T add(T a,T b)
{return a+b;
}int main()
{int a=1;float b=3.14;add<int>(a,b);
}
解决办法二,根据形参定义多个通用类型
#include "iostream"using namespace std;template <class T,class T1>
T add(T a,T1 b)
{return a+b;
}int main()
{int a=1;float b=3.14;add(a,b);
}