Unterschied: Referenz& und *Pointer
-
zu früh auf "antwort erstellen" geklickt
wollt noch schnell ein code beispiel machen:
void neuerZeiger (const int * & ptr_ref) { ptr_ref = new int(14); } //ist pferdevalent zu void neuerZeiger (const int * * ptr_ptr) { *ptr_ptr = new int(14); } //aber das geht nicht: void neueReferenz (const int & & ref_ref) { ref_ref = ???; //was sollte ich den hier tun, eine referenz ist immer const... }
-
Original erstellt von Dimah:
i.d.r. werden referenzen intern über pointer implementiertUnd wie seht das dann genau aus?
-
Original erstellt von <hups>:
**zu früh auf "antwort erstellen" geklicktwollt noch schnell ein code beispiel machen:
void neuerZeiger (const int * & ptr_ref) { ptr_ref = new int(14); } //ist pferdevalent zu void neuerZeiger (const int * * ptr_ptr) { *ptr_ptr = new int(14); } //aber das geht nicht: void neueReferenz (const int & & ref_ref) { ref_ref = ???; //was sollte ich den hier tun, eine referenz ist immer const... }
**
Das ist klar. Es ging ja eigentlich auch mehr um die Sache
const int &i
vs.
const int *pi
.
-
Compiler Magie!
Eine Referenz == ein konstanter Zeiger, der nicht mit null initialisiert werden darf, und nicht dereferenziert werden muss
Also macht der Compiler aus jeder Referenz einen Zeiger und schaut sich dabei schön brav die regel oben an
-
Original erstellt von Drakos:
Und wie seht das dann genau aus?stelle dir vor dein compiler macht aus
void foo(int & i) { i = 100; }
ein
void foo(int * i) { (*i) = 100; }
natürlich macht es das nicht so, sondern das leuft auf anderer ebene ab (aber wenn ich ein c++ compilier bauen sollte der ein c compilier benutzt dann würde ich das so machen)
-
finde der standard sollte vorschreiben, dass undefiniertes verhalten das programm zu terminieren hat (oder von mir aus nur ne exception). außer man deklariert seine funktion als "undefined" dann würde eine 0 Referenz nicht mehr vorkommen
-
Original erstellt von Entyl_Sa:
Also zwischen Pointern und Referencen gibt es auf jeden Fall einen Unterschied.Mensch, du treibst diesen Thread aber voran .
Aber zum anderen Thema:
Ich denke wenn man so verplant ist eine Referenz auf bereits freigegebenen Speicher zu übergeben dann sollte man echt mal für ne Stunde den PC ausmachen und schlafen gehen...