next up previous contents index
Next: Überladen Default-Parameter Up: 50 Ways to Improve Previous: Übergabe und Rückgabe per

Keine Referenzrückgabe für neue Objekte

   

Es gibt zwei Möglichkeiten neue Objekte zu erzeigen:

1.
Auf dem Keller:
    bruch& operator* ( const bruch& b1,
                       const bruch& b2)
    { bruch result(b1.zae()*b2.zae(),
                   b1.nen()*b2.nen());
      return result;  // FEHLER
    }

2.
Auf dem Heap:
    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 tex2html_wrap_inline5173 funktioniert nicht!

Bei dynamischer Allokation    

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
    }


next up previous contents index
Next: Überladen Default-Parameter Up: 50 Ways to Improve Previous: Übergabe und Rückgabe per

Peter Pfahler, 1997