Cách sử dụng template class, function trong C++


Cách sử dụng template class, function trong C++

template <class T> T Max(T a, T b){  return (a<b)? b : a; }

 

template <class T> T Max(T a, T b, T c){       return max(a, max(b, c)); }

 

template <class T> T Max(T *a, int n){

      T x = a[0];

      for(int i=1; i<n; i++)

            x = Max(x, a[i]);

      return x;

}

class Fraction{

private:

      int num, den;

public:

      Fraction (int, int);

      bool operator < (Fraction);

      friend ostream &operator<<(ostream &, Fraction&);

};

Fraction::Fraction (int a, int b){       num = a; den = b;  }

 

bool Fraction::operator<(Fraction b)

{      return 1.0*this->num/this->den < 1.0*b.num/b.den;  }

ostream &operator<<(ostream &os, Fraction &f)

{      cout<<f.num<<"/"<<f.den;       return os; }

//test

int a[]={2, 9, 8, 4};

cout<<Max(1,2)<<"  "<<Max(2.13, 1.21)<< "  "<<Max(a,4)<<endl;

cout<< Max(Fraction(1,2),Fraction(10,2))<<endl;

cout<<Max(1,3,2)<<" "<<Max(2.13, 1.21, 0.12) ;

Fraction f[] = { Fraction(1,2) , Fraction(7,2) , Fraction(3,2) };

cout<<Max(f,3);

Trương Đình Huy