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
}