1、函数模板
#include<iostream>
using namespace std;
//函数模板(“template”关键字与函数模板定义之间不可有任何间隔!)
template<class T>
T myMaxA(T a, T b)
{
if (a >= b)
{
return a;
}
else
{
return b;
}
}
template<class typeA, class typeB>
typeA myMaxB(typeA a, typeB b)
{
if (a >= b)
{
return a;
}
else
{
return (typeA)b;
}
}
int main(int argc, char* argv[])
{
cout << myMaxA<double>(1.0, 2.01) << endl;
cout << myMaxB<int, double>(3, 2.0) << endl;
}
/*
输出结果:
2.01
3
*/
2、类模板
//类模板(可以有单个或多个模板类型)
template<class typeA, class typeB>
class Compare
{
private:
typeA x;
typeB y;
public:
inline void setValue(typeA myX, typeB myY)
{
this->x = myX;
this->y = myY;
}
inline typeA min()
{
if (x >= y)
{
return x;
}
else
{
return (typeA)y;
}
}
};
int main(int argc, char* argv[])
{
Compare<int, double> myCompare;
myCompare.setValue(102, 341.5);
cout<<myCompare.min()<<endl;
}
/*
输出结果:
341
*/