Suche…
Referenz definieren
Referenzen verhalten sich ähnlich, aber nicht ganz wie const-Zeiger. Eine Referenz wird definiert, indem ein kaufmännisches Und &
an einen Typnamen angehängt wird.
int i = 10;
int &refi = i;
Hier ist refi
eine Referenz, die an i
gebunden ist.
References abstrahieren die Semantik von Zeigern und wirken wie ein Alias für das zugrunde liegende Objekt:
refi = 20; // i = 20;
Sie können auch mehrere Referenzen in einer einzigen Definition definieren:
int i = 10, j = 20;
int &refi = i, &refj = j;
// Common pitfall :
// int& refi = i, k = j;
// refi will be of type int&.
// though, k will be of type int, not int&!
Referenzen müssen zum Zeitpunkt der Definition korrekt initialisiert werden und können danach nicht mehr geändert werden. Der folgende Code verursacht einen Kompilierungsfehler:
int &i; // error: declaration of reference variable 'i' requires an initializer
nullptr
Gegensatz zu Zeigern können Sie auch keinen direkten Verweis auf nullptr
binden:
int *const ptri = nullptr;
int &refi = nullptr; // error: non-const lvalue reference to type 'int' cannot bind to a temporary of type 'nullptr_t'
C ++ - Referenzen sind Alias für vorhandene Variablen
Eine Referenz in C ++ ist nur ein Alias
oder ein anderer Name einer Variablen. Genau wie die meisten von uns können wir sie mit unserem Passnamen und Nickname beziehen.
Referenzen existieren nicht wörtlich und sie belegen keinen Speicher. Wenn wir die Adresse der Referenzvariablen ausgeben, wird dieselbe Adresse ausgegeben wie die Variable, auf die sie verweist.
int main() {
int i = 10;
int &j = i;
cout<<&i<<endl;
cout<<&b<<endl;
return 0;
}
Im obigen Beispiel drucken beide cout
Adressen dieselbe Adresse. Die Situation wird dieselbe sein, wenn wir eine Variable als Referenz in einer Funktion verwenden
void func (int &fParam ) {
cout<<"Address inside function => "<<fParam<<endl;
}
int main() {
int i = 10;
cout<<"Address inside Main => "<<&i<<endl;
func(i);
return 0;
}
Auch in diesem Beispiel drucken beide cout
dieselbe Adresse.
Da wir inzwischen wissen, dass C++ References
nur ein Alias sind und ein Alias erstellt werden muss, müssen wir etwas haben, auf das der Alias verweisen kann.
Das ist der genaue Grund, warum die Anweisung einen Compiler-Fehler auslöst
int &i;
Denn der Alias bezieht sich nicht auf irgendetwas.