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.