天天看點

overload the operator

運算符重載是c++的又一個先進功能。它使使用者可以對自己定義的對象使用運算符像對int、float使用一樣友善、簡潔、形象,增加程式的可讀性。重載運算符既可以用友元函數,也可以用成員函數。推薦使用成員函數進行重載,因為友元函數破壞了c++的封裝性。自寫程式下:

//overloading operator

#include <iostream.h>

class coor

{

 friend istream &operator>> ( istream &, coor & );

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

public:

 coor( int = 0, int = 0 );

 coor operator+ ( coor & );

 coor operator- ( coor & );

 bool operator== ( coor & );

 bool operator!= ( coor & );

private:

 int x;

 int y;

};

istream &operator>> ( istream &input, coor &d )

{

 input.ignore();

 input >> d.x;

 input.ignore();

 input >> d.y;

 input.ignore();

 return input;

}

ostream &operator<< ( ostream &output, coor &d)

{

 output << '(' << d.x

     << ',' << d.y

     << ')' << endl;

 return output;

}

coor::coor( int X, int Y)

{

 x = X;

 y = Y;

}

coor coor::operator+ ( coor &a )

{

 coor c;

 c.x = this->x + a.x;

 c.y = this->y + a.y;

 return c;

}

coor coor::operator- ( coor &a )

{

 coor c;

 c.x = this->x - a.x;

 c.y = this->y - a.y;

 return c;

}

bool coor::operator== ( coor &a )

{

 if( this->x == a.x && this->y == a.y )

  return true;

 else return false;

}

bool coor::operator!= ( coor &a )

{

 return !( *this == a );

}

int main()

{

 coor num1(5,9), num2(5,9), sum;

 cout << "num1 = " << num1 << endl;

 cout << "num2 = " << num2 << endl;

 cout << "sum = " << sum << endl;

 if( num1 == num2 )

  cout << "num1 is equal to num2" << endl;

 if( num1 != num2 )

  cout << "num1 is not equal to num2" << endl;

 cout << "type the num2: " <<endl;

 cin >> num2;

 cout << "num2 = " << num2 <<endl;

 if( num1 == num2 )

  cout << "num1 is equal to num2" << endl;

 if( num1 != num2 )

  cout << "num1 is not equal to num2" << endl;

 sum = num1 + num2;

 cout << "num1 + num2 = sum = " << sum << endl;

 return 0;

}