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.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow