Zoeken…


Een referentie definiëren

Verwijzingen gedragen zich op dezelfde manier, maar niet helemaal als const pointers. Een verwijzing wordt gedefinieerd door een ampersand & te voegen naar een typenaam.

int i = 10;
int &refi = i;

Hier is refi een verwijzing gebonden aan i .
Referenties abstraheert de semantiek van verwijzingen en gedraagt zich als een alias voor het onderliggende object:

refi = 20; // i = 20;

U kunt ook meerdere referenties definiëren in één definitie:

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&!

Referenties moeten correct worden geïnitialiseerd op het moment van definitie en kunnen achteraf niet worden gewijzigd. Het volgende stuk codes veroorzaakt een compileerfout:

int &i; // error: declaration of reference variable 'i' requires an initializer

U kunt ook geen directe verwijzing naar nullptr , in tegenstelling tot pointers:

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 ++ Referenties zijn Alias van bestaande variabelen

Een referentie in C ++ is gewoon een Alias of een andere naam van een variabele. Net zoals de meesten van ons kan worden verwezen met behulp van onze paspoortnaam en bijnaam.

Verwijzingen bestaan niet letterlijk en nemen geen geheugen in beslag. Als we het adres van de referentievariabele afdrukken, wordt hetzelfde adres afgedrukt als dat van de variabele waarnaar het verwijst.

int main() {
    int i = 10;
    int &j = i;
    
    cout<<&i<<endl;
    cout<<&b<<endl;
    return 0;
}

In het bovenstaande voorbeeld drukken beide cout hetzelfde adres af. De situatie zal hetzelfde zijn als we een variabele als referentie nemen in een functie

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;
}

Ook in dit voorbeeld zullen beide cout hetzelfde adres afdrukken.

Zoals we inmiddels weten dat C++ References alleen alias zijn, en om een alias te kunnen maken, moeten we iets hebben waarnaar de Alias kan verwijzen.

Dat is de precieze reden waarom de uitspraak als deze een compilerfout veroorzaakt

int &i;

Omdat de alias nergens naar verwijst.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow