int main()
{
int x = 5;
int &ref = x; //ref is de referentie van x
cout << x;
cout << ref;
ref = 10;
cout << x;
cout << ref;
cout << &x;
cout << &ref;
return 0;
}
In dit voorbeeld wordt in regel 2 "ref" de referentie gemaakt van x en is "ref" dus in alle
opzichten gelijk aan x. Bij de eerste 2 regels uitvoer komt dan ook de waarde 5 te staan
waarna we ref 10 maken en x dus ook 10 wordt. Als we dan dus weer de waarde van x en ref gaan
bekijken blijken ze beiden 10 te zijn. Als we nu het geheugenadres gaan opvragen van x en ref
blijkt dat ook de geheugenadressen gelijk zijn. Het komt er dus op neer dat ref precies hetzelfde
is als x in elk opzicht.Je begrijpt nu misschien wel dat je in plaats van pointers ook referenties kunt gebruiken om data te manipuleren. Hieronder zal ik nog even een voorbeeld neerzetten om je het nut van referenties duidelijk te maken en het verschil met pointers te laten zien.
void swap(int *x, int *y)
{
int temp= *x;
*x = *y;
*y = temp;
}
int main()
{
int x = 10, y = 5;
cout << x \n;
cout << y \n;
swap(&x, &y);
cout << x \n;
cout << y \n;
return = 0;
}
Zoals je ziet worden hier 2 waarden omgewisseld door gebruik te maken van pointers.
In main worden eerst 2 variabelen gemaakt waarvan de waarde door cout op het scherm wordt gezet
(10 en 5). Vervolgens wordt het geheugen adres van x en y doorgegeven aan de functie swap die
de waarden van x en y omwisselt. De nieuwe waarden laten we op het laatst nog een keer zien om te
controleren of de waarden zijn gewisselt (5 en 10).Nu gaan we hetzelfde nog een keer doen maar dan met referenties.
void swap(int &x, int &y)
{
int temp= x;
x = y;
y = temp;
}
int main()
{
int x = 10, y = 5;
cout << x \n;
cout << y \n;
swap(x, y);
cout << x \n;
cout << y \n;
return = 0;
}
Als het goed is moet hier dus hetzelfde uitkomen als het vorige voorbeeld maar nu met referenties.
De functie swap ontvangt nu gewoon x en y waaraan dus gerefereerd gaat worden in swap (zie de swap
functie). Vervolgens wordt de waarde in swap verwisselt. Je ziet dat dit een stuk duidelijker werkt
dan met pointers.Succes Vampire, |