1. 程式人生 > >比較大小 ——類模板

比較大小 ——類模板

#include <iostream>
#include <iomanip>
usingnamespace std;
template<classnumtype>//宣告一個模板,虛擬型別名為numtype。class表明,其後面的是型別引數,名字可任取。
classCompare //類模板名為Compare
{
public:
    Compare(numtype a,numtype b);
    numtype max(); //函式型別暫定為numtype
    numtype min();
private:
    numtype x,y; //資料型別暫定為numtype
};

//在類模板外定義各成員函式

template<classnumtype>   
Compare<numtype>::Compare(numtype a,numtype b):x(a),y(b){}

 
template<classnumtype>
numtype Compare<numtype>::max()
{
    return(x>y)? x:y;
}
 
template<classnumtype>
numtype Compare<numtype>::min()
{
    return(x<y)? x:y;
}

//以下為主函式


intmain()
{
    inti1,i2;
    cin>>i1>>i2;
    Compare<int> cmp1(i1,i2);
    cout<<cmp1.max()<<" "<<cmp1.min()<<endl;
    floatf1,f2;
    cin>>f1>>f2;
    Compare<float> cmp2(f1,f2);
    cout<<setiosflags(ios::fixed);
    cout<<setprecision(2);
    cout<<cmp2.max()<<" "<<cmp2.min()<<endl;
    charc1,c2;
    cin>>c1>>c2;
    Compare<char> cmp3(c1,c2);
    cout<<cmp3.max()<<" "<<cmp3.min()<<endl;
    return0;
}
 
/**************************************************************
    Problem: 2437
    User: 201358501133
    Language: C++
    Result: Accepted
    Time:0 ms
    Memory:1268 kb
****************************************************************/