Etwas verwirrt - Referenzen und Zeiger
-
N'Abend.
Kleines Problem - ich bin ziemlich verwirrt was Referenzen und Zeiger betrifft.
Ganz einfaches Beispiel: worin besteht der Unterschied zwischen folgenden beiden Funktionen und was sollte ich nehmen, wenn das Objekt nicht als Kopie zurück gegeben werden soll?const meineklasse& f(const meineklasse&); const meineklasse* f(const meineklasse&);
Warum schreibt man eigentlich das "const" vor dem Parameter in der Parameterliste der Funktion? Die Referenz ist klar - so wird das Objekt nicht kopiert. Hätte man anstatt der Referenz auch einen Zeiger nehmen können?
Gruß die Anarchi3
-
Wenn Du Deine Funktion aufrufst
I const meineKlasse& myClass( f(anotherClassOfMine));
II const meineKlasse* myClass( f(anotherClassOfMine));Dann kannst Du bei Version 1 myClass keiner anderen Klasse mehr zuordnen, während Du bei Version II als nächst Zeile
myClass = oneMoreClassOfMine
schreiben kannst.
Die Referenz ist wie ein konstanter Zeiger: den wert, den sie kriegt, kannste nicht mehr ändern.
Warum schreibt man eigentlich das "const" vor dem Parameter in der Parameterliste der Funktion?
Du musst das von rechts nach links lesen:
int * const: konstanter (='const') Zeiger auf(='*') int(='int')
int & const: konstante Referenz auf int (was int& entspricht, weil ne referenz eh konstan ist
int const *: Zeiger auf konstantes Int
int const &: Referenz auf konstantes int
const int *: Zeiger auf int, das konstant ist ( d.h. das entspricht int const
const int &: Zeiger auf int, das konstant ist