Ab wann lohnen sich Referenzen?
-
Hab mal eine Frage,
lohnt sich sowas schon:
class Foo { int i; public: int& Geti() { return(i); } };Oder ab wann lohnen sich Referenzen statt kopieren?
-
also wenn du das maximale an performace rausholen möchtest
wenn du merhrere "rückgabewerte" brauchst
wenn du in deiner funktion eine variable von ausserhalb bearbeiten möchtest
viel anwendung findet es bei klassen, schau dir also objektorientrierung an (besonders deutlich wird es bei operatorüberladung etc)
-
Bei PODs machts man es nicht...
-
Ich schliesse mich ser1al an. Meiner meinung nach lohnen sich Referenzen erst bei benutzerdefinierten Objekten, wenn man keinen Konstruktor, Destruktor und Kopierkonstruktor aufrufen möchte. Bei den normalen Datentypen lohnt es sich nicht.
cya,
0xDEADBEEF
-
In diesem Fall hat das nur mit Lohnen überhaupt nichts zu tun. Wenn ich x.getI() = 12; machen können will muss ich eine Referenz zurückgeben, wenn ich nur lesen will nicht.
-
Wobei der "nutzen" seiner klasse im obigen Beispiel arg zweifelhaft ist ...
Warum ne variable verstecken, wenn man sie per referenz eh nach aussen gibt ?
Also so ganz ohne weiteren context, macht das ganze nich viel Sinn.Oder ab wann lohnen sich Referenzen statt kopieren?
schwer zu sagen ... ne "referenz uebergeben" ist quasi nen zeiger kopieren, auf 32bit systemen halt ne 4 byte stack kopie.
"Lohnen" tut es sich also wenn die variable sehr gross ist ...
wenn der konstruktor / destruktor nicht trivial ist, und ne menge rechenzeit verheizt.der Nachteil ist auch klar ... kopien sind sicherer ... referenzen koennen verwaisen. ueber threadgrenzen hinweg muessen referenzen dann abgesichert werden ...
Ciao ....