C++ Tutorial/Operator Overloading/overload plus subtract

Материал из C\C++ эксперт
Перейти к: навигация, поиск

operator+( ) function: Operator Overloading Using a Friend Function

#include <iostream>
using namespace std;
   
class loc {
  int longitude, latitude;
public:
  loc() {} // needed to construct temporaries
  loc(int lg, int lt) {
    longitude = lg;
    latitude = lt;
  }
   
  void show() {
    cout << longitude << " ";
    cout << latitude << "\n";
  }
   
  friend loc operator+(loc op1, loc op2); // now a friend
  loc operator-(loc op2);
  loc operator=(loc op2);
  loc operator++();
};
   
// + is overloaded using friend function.
loc operator+(loc op1, loc op2)
{
  loc temp;
   
  temp.longitude = op1.longitude + op2.longitude;
  temp.latitude = op1.latitude + op2.latitude;
   
  return temp;
}
   
// Overload - for loc.
loc loc::operator-(loc op2)
{
  loc temp;
   
  // notice order of operands
  temp.longitude = longitude - op2.longitude;
  temp.latitude = latitude - op2.latitude;
   
  return temp;
}
   
// Overload assignment for loc.
loc loc::operator=(loc op2)
{
  longitude = op2.longitude;
  latitude = op2.latitude;
   
  return *this; // i.e., return object that generated call
}
   
// Overload ++ for loc.
loc loc::operator++()
{
  longitude++;
  latitude++;
   
  return *this;
}
   
int main()
{
  loc ob1(10, 20), ob2( 5, 30);
   
  ob1 = ob1 + ob2;
  ob1.show();
   
  return 0;
}