目录
其函数返回值数据类型 和 形参的数据类型 不具体指定,用一个虚拟的类型在代表
void _swap(int &a,int &b)
{
a = a+b;b=a-b;a=a-b;
}
void _swap(double &a,double &b)
{
a = a+b;b=a-b;a=a-b;
}
void _swap(char &a,char &b)
{
a = a+b;b=a-b;a=a-b;
}
不断重写swap函数,太过麻烦
我们可以建立一个通用板的函数
template<typename T>
void _swap(T &a,T &b)
{
cout<<"template"<<endl;
a = a+b;b=a-b;a=a-b;
}
int a = 10,b=20;
当_swap(a,b);调用后
会自动生成void _swap(int &a,int &b)
template<typename T,typename Tx>
void _swap(T &a,Tx &b)
{
cout<<"template"<<endl;
a = a+b;b=a-b;a=a-b;
}
template<typename T=int>
T _max(T a,T b)
{
T c;
return a>b?a:b;
}
int a = 10,b=20;
_max<int>(a,b);---->int _max(int a,int b)
template<typename T>
T _max(T a,T b,T c)
{
return a>b ? (a>c?a:c) : (b>c?b:c);
}
cout<<max<int>(10,20,30)<<endl;
如果在类中实现
class Max
{
public:
Max();
template<typename T>
T max(T a,T b,T c);
};
如果有max.cpp max.h,那下面模板函数定义一定要放到.h里,上面的也可以放到.h里
template<typename T>
T Max::max(T a,T b,T c)
{
return a>b ? (a>c?a:c) : (b>c?b:c);
}
调用方法如下
Max mya;
cout<<mya.max<int>(10,20,30)<<endl;