PG2 - Programmieren C++ - SS 2009 - Übung 4 Erweitern der komplexe Zahlen Klasse aus Übung 3 1. Zuweisungsoperator - für Aufrufe der Form: complex c1(3.5, 5.8) complex c2; c2 = c1; ist die Implementierung des Zuweisungsoperators erforderlich - als Faustregel übernimmt der Zuweisungsoperator ein Objekt der Klasse als Referenz und gibt das aktuelle Objekt als Referenz zurück complex &operator= (const complex &other); - die Zuweisung zu sich selbst muß bei der Implementierung als Sonderfall beachtet werden (Faustregel) 2. Rechenoperatoren - Zum Rechnen in der Form: c3 = c1 + c2; wird der Additions-Operator benötigt - die Operator-Methode übernimmt eine Referenz auf ein Objekt der Klasse als 2. Summand, und gibt aber keine Referenz, sondern einen (neuen) Wert zurück complex operator+ (const complex &other); - zur Implementierung der Operator-Methode kann bzw. soll auf bereits vorhandene Methoden zurückgegriffen werden - die weiteren Operatoren für Subtraktion, Multiplikation und Division werden analog implementiert 3. Vergleichsoperatoren - die Vergleichsoperatoren unterscheiden sich nur wenig von den Vorherigen, und werden z.B. in if-Anweisungen benötigt: if (c1 == c2) { cout << "Zahlen sind gleich" << endl; } - der Rückgabewert eines Vergleichsoperators muß bool sein, als Parameter wird wieder eine Referenz auf ein Objekt der Klasse übernommen bool operator== (const complex &other); - beim Ungleich-Operator != kann der Gleichheits-Operator aufgerufen und negiert werden - Größer/Kleiner-Operatoren sind für komplexe Zahlen nicht definiert - Achtung: Vergleiche von Fließkommazahlen sind im Allgemeinen nicht sicher, durch kumulierte Rechenfehler sind mathematisch gleiche Zahlen bzw. Ergebnisse nach der Berechnung im Computer nicht unbedingt gleich, siehe http://www.mpdvc.de/artikel/FloatingPoint.htm