Beispiel: Eine ``Punkt''-Klasse

#include <iostream.h>

class Point
{ private:
  int x, y; // die Koordinaten
public:
  Point(int X=0); 
  Point(int, int);
  
  Point& add(Point&);
  Point& operator + (Point&);
  friend ostream& operator << (ostream&, const Point&);
  
  void assign(int, int);
};


void Point::assign(int X, int Y)
{ x = X; y = Y;
}

Point::Point(int X)
{ assign(X, X);
}

Point::Point(int X, int Y)
{ assign(X, Y);
}

Point& Point::add(Point &p)
{ // Es wird durch den Aufruf des Konstruktors
// ein temporäres Objekt erzeugt, das nach
// der Zuweisung wieder gelöscht wird 
return Point(x+p.x, y+p.y);
}

Point& Point::operator + (Point& p)
{ return add(p);
}

ostream& operator << (ostream& s, const Point& p)
{ return s << '(' << p.x << ',' << p.y << ')';
}

main()
{ Point a(2), b(2,3), c;
  c = a.add(b); // Funktionsaufruf 
  c = a + b; // Element-Operator +
  c = a.operator+(b); // wie vorher
  // Das empfangende Objekt ist implizit
  // der linke Operand.
 
  cout << c << endl; // Friend Operator <<
}

previous up next


© 1997 Gottfried Rudorfer, C++-AG, Lehrveranstaltungen, Abteilung für Angewandte Informatik, Wirtschaftsuniversität Wien, 12/10/1998