C++ Tutorial/Operator Overloading/overload plus subtract

Материал из C\C++ эксперт
Версия от 13:30, 25 мая 2010; Admin (обсуждение | вклад) (1 версия: Импорт контента...)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

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

<source lang="cpp">#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;

}</source>