C++ friend function to overload + operator

Description

C++ friend function to overload + operator

#include <iostream>
using namespace std;
class Measure//from ww  w  .j  a v  a  2 s.c o m
{
   private:
   int feet;
   float inches;
   public:
   Measure()
   { feet = 0; inches = 0.0; }
   Measure( float fltfeet )   //constructor (one arg)
   {                        //convert float to Measure
       feet = int(fltfeet);           //feet is integer part
       inches = 12*(fltfeet-feet);    //inches is what's left
   }
   Measure(int ft, float in)
   { 
       feet = ft; inches = in; 
   }
    
   void showdist()
   { cout << feet << "\'-" << inches << '\"'; }
    
    friend Measure operator + (Measure, Measure); //friend
};

Measure operator + (Measure d1, Measure d2) //add D1 to d2
{
    int f = d1.feet + d2.feet;        //add the feet
    float i = d1.inches + d2.inches;  //add the inches
    if(i >= 12.0)                  //if inches exceeds 12.0,
       { i -= 12.0; f++;  }        //less 12 inches, plus 1 foot
    return Measure(f,i);          //return new Measure with sum
}
int main()
{
    Measure d1 = 2.5;                //constructor converts
    Measure d2 = 1.25;               //float-feet to Measure
    Measure d3;
    cout << "\nd1 = "; d1.showdist();
    cout << "\nd2 = "; d2.showdist();
    d3 = d1 + 10.0;                   //distance + float: OK
    cout << "\nd3 = "; d3.showdist();
    d3 = 10.0 + d1;                   //float + Measure: OK
    cout << "\nd3 = "; d3.showdist();
    cout << endl;
    return 0;
}



PreviousNext

Related