第一题:
#include <iostream>//比较3种不同类型数的大小
using namespace std;
template<class Type1,class Type2,class Type3>
Type1 GetMax(Type1 x,Type2 y,Type3 z)
{
cout<<"max:";
if(x>y)
{
if(x>z)
return x;
else
return z;
}
else
return y;
}
void main()
{
int x;
double y;
long z;
cout<<"输入整数x:";
cin>>x;
cout<<"输入小数y:";
cin>>y;
cout<<"输入长整数z:";
cin>>z;
cout<<"注释:由于函数的返回值是整数,所以得到的一定是int型的"<<endl;
cout<<"x,y,z中的最大值"<<GetMax(x,y,z)<<endl;
}
第二题
#include <iostream>
using namespace std;
template<class Type>//利用模板类比较同为double或者int的大小
class CData
{
public:
CData(){};
void SetData(Type data1,Type data2);
Type GetMax();
~CData(){};
private:
Type m_data1;
Type m_data2;
};
template<class Type>
void CData<Type>::SetData(Type data1,Type data2)//中间用Type
{
m_data1=data1;
m_data2=data2;
}
template<class Type>
Type CData<Type>::GetMax()
{
if(m_data1>=m_data2)
return m_data1;
else
return m_data2;
}
void main()
{
cout<<"比较int:10和15的大小:";
CData<int> b;
b.SetData(10,15);
cout<<b.GetMax()<<endl;
cout<<"比较double:10.5和15.5的大小:";
CData<double> c;
c.SetData(10.5,15.5);
cout<<c.GetMax()<<endl;
}