Referenz weiterreichen
-
Hallo!
1. Frage
Bei folgendem wird obj ja kopiert:Object obj; machWas(obj); // .... void machWas(Object obj) { }In folgendem Fall wird mit einer Referenz gearbeitet:
Object obj; machWas(obj); // .... void machWas(Object& obj) { }Hier würde mich interessieren, wie eine Referenz aufgebaut ist? Ist eine Referenz intern nichts anderes als ein Zeiger, der lediglich anders verpackt und vom Compiler strikter behandelt wird?
2. Frage
Was passiert hier:Object obj& = objA; machWas(obj); // .... void machWas(Object& obj) { }Wird hier eine Referenz (oder ein Referenz-Objekt?) bei der Übergabe kopiert? Mir ist das noch nicht ganz klar

-
ja, intern ist das ein Zeiger. Der Compiler behandelt Referenzen also etwas abstrakter und stellt sicher, dass damit kein Schmuh gemacht wird.
Mit Referenzen ist C++ ziemlich alleine. Mir fällt grad keine andere Sprache ein, die Referenzen kennt. (Referenzvariablen wie z.B. in Java zählen nicht, das sind ja quasi Zeiger)
Und wenn du Referenzen weiterreichst passiert nicht aussergewöhnliches.
-
Skym0sh0 schrieb:
ja, intern ist das ein Zeiger. Der Compiler behandelt Referenzen also etwas abstrakter und stellt sicher, dass damit kein Schmuh gemacht wird.
Mit Referenzen ist C++ ziemlich alleine. Mir fällt grad keine andere Sprache ein, die Referenzen kennt. (Referenzvariablen wie z.B. in Java zählen nicht, das sind ja quasi Zeiger)
Und wenn du Referenzen weiterreichst passiert nicht aussergewöhnliches.
Nichts außergewöhnliches heißt was?
Wird eine Referenz dann kopiert? Heißt das intern wird irgendwo ein Zeiger kopiert, sofern eine Referenz sowas wie ein gekapselter Zeiger ist?
-
intern werden zeiger weiter gereicht, sprich Speicheradressen kopiert. Du arbeitest immer noch auf demselben Urpsrungsobjekt falls das deine frage ist...