Referenz übergabe?



  • Kann mir jemand erklären warum ich etwas als Referenz übergebe
    aber dies im nachhinein als const vereinbare.
    Gibt es außer der Geschwindigkeit auch nocht andere Vorteile....



  • wenn eine referenz übergeben wird, erhält man die Adresse des orignalen Objekts, sonst eine Kopie



  • Nicht kopierbare Objekte können nur per Referenz übergeben werden.



  • Ein weiterer Vorteil könnte z.B. sein das du mehrere Variablen in deiner Funktion ändern kannst, welche dann auch bestehen bleiben. Normalerweise kannst du ja nur
    einen wert returnen, so kannst du 5 per Referenz übergeben und alle bleiben geändert.



  • Unterschiede ausser der Geschwindigkeit:
    by-Value:

    • Kopierkonstruktor wird aufgerufen
    • neues Objekt (Kopie) wird übergeben
    • die Kopie kann in der Funktion als lokale Variable behandelt (und damit verändert) werden

    by-Referenz(const):

    • kein Kopierkonstruktor nötig (ist bei manchen Klassen mit Absicht private)
    • Originalobjekt wird übergeben, Identität bleibt erhalten
    • Objekt kann nicht verändert werden

    Bei ganz kleinen Datentypen (int oder kleine Klasse mit hauptsächlich inline-Funktionen) kann Referenz-Übergabe übrigens aufgrund des indirekten Zugriffs auch mal langsamer sein als Wert-Übergabe.


Log in to reply