Es gibt zwei Möglichkeiten neue Objekte zu erzeigen:
bruch& operator* ( const bruch& b1, const bruch& b2) { bruch result(b1.zae()*b2.zae(), b1.nen()*b2.nen()); return result; // FEHLER }
bruch& operator* ( const bruch& b1, const bruch& b2) { bruch* result = new bruch( (b1.zae()*b2.zae(), b1.nen()*b2.nen()); return *result; // GEFAHR }
Die erste Version benutzt eine Referenz auf ein lokales Objekt
funktioniert nicht!
besteht die Gefahr eines ``Speicherlecks'', wenn die zugehörige delete-Operation nicht ausgeführt wird.
Also: Wertrückgabe:
bruch operator* ( const bruch& b1, const bruch& b2) { bruch result(b1.zae()*b2.zae(), b1.nen()*b2.nen()); return result; // OK }