C++/Overload/Divide

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

Overload the * and / relative to MyClass class.

#include <iostream>
using namespace std;
class MyClass {
  int x, y; 
public:
  MyClass() { 
     x=0; 
     y=0; 
  }
  MyClass(int i, int j) { 
     x=i; 
     y=j; 
  }
  void getXY(int &i, int &j) { 
     i=x; 
     j=y; 
  }
  MyClass operator*(MyClass object2);
  MyClass operator/(MyClass object2);
};
// Overload * relative to MyClass class.
MyClass MyClass::operator*(MyClass object2)
{
  MyClass temp;
  temp.x = x * object2.x;
  temp.y = y * object2.y;
  return temp;
}
// Overload / relative to MyClass class.
MyClass MyClass::operator/(MyClass object2)
{
  MyClass temp;
  temp.x = x / object2.x;
  temp.y = y / object2.y;
  return temp;
}
int main()
{
  MyClass object1(10, 10), object2(5, 3), object3;
  int x, y;
 
  object3 = object1 * object2;
  object3.getXY(x, y);
  cout << "(object1*object2) X: " << x << ", Y: " << y << endl;
  object3 = object1 / object2;
  object3.getXY(x, y);
  cout << "(object1/object2) X: " << x << ", Y: " << y << endl;
  return 0;
}


Overload the - and / relative to MyClass class using friend functions.

#include <iostream>
using namespace std;
class MyClass {
  int x, y; 
public:
  MyClass() { 
     x=0; 
     y=0; 
  }
  MyClass(int i, int j) { 
     x=i; 
     y=j; 
  }
  void getXY(int &i, int &j) { 
     i=x; 
     j=y; 
  }
  friend MyClass operator-(MyClass object1, MyClass object2);
  friend MyClass operator/(MyClass object1, MyClass object2);
};
// Overload - relative to MyClass class using friend.
MyClass operator-(MyClass object1, MyClass object2)
{
  MyClass temp;
  temp.x = object1.x - object2.x;
  temp.y = object1.y - object2.y;
  return temp;
}
// Overload / relative to MyClass class using friend.
MyClass operator/(MyClass object1, MyClass object2)
{
  MyClass temp;
  temp.x = object1.x / object2.x;
  temp.y = object1.y / object2.y;
  return temp;
}
int main()
{
  MyClass object1(10, 10), object2(5, 3), object3;
  int x, y;
 
  object3 = object1 - object2;
  object3.getXY(x, y);
  cout << "(object1-object2) X: " << x << ", Y: " << y << endl;
  object3 = object1 / object2;
  object3.getXY(x, y);
  cout << "(object1/object2) X: " << x << ", Y: " << y << endl;
  return 0;
}