模板函数格式
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);
}