Reference (upućivanja) se u jeziku C++ korisste samo za prenos argumenata funkcije po adrsi i za vraćanje vrednosti po adresi.
Code:
// Primer 1
#include <iostream>
using namespace std;
int& manja(int &a, int &b)
{
if (a<b)
return a;
else
return b;
}
void zameni(int &a, int &b)
{
int t;
t = a;
a = b;
b = t;
}
int main()
{
int a=5, b=7;
zameni(a,b);
manja(a,b)++;
cout << a << endl << b << endl;
return 0;
}
Ako si nekada učio Pascal i voleo with naredbu koju sam ja oduvek iz dna duše mrzeo (ne znam zašto), možeš upućivanja da koristiš i za to.
Code:
// Primer 1
#include <iostream>
using namespace std;
typedef
struct llista
{
int cvor;
struct llista *sledeci;
} *lista;
void dodaj_na_kraj(lista &l, int n)
{
if (l==0)
{
l = new struct llista;
l->cvor = n;
l->sledeci = 0;
}
else
dodaj_na_kraj(l->sledeci, n);
}
void brisi(lista &l)
{
if (l!=0)
{
brisi(l->sledeci);
delete l;
l = 0;
}
}
int main()
{
lista l = 0;
dodaj_na_kraj(l,1);
dodaj_na_kraj(l,2);
dodaj_na_kraj(l,3);
lista &p = l->sledeci;
cout << p->cvor << endl << p->sledeci->cvor << endl;
brisi(l);
return 0;
}
Naravno, ovo je C-ovski pristup. U duhu jezika C++ je upotreba šablona za liste iz standardne biblioteke šablona STL. Ako baš hoćeš da odradiš sve ručno, onda je u duhu jezika C++ pravljenje odgovarajuće klase, ili još bolje šablona.
Drugih smislenih primena upućivanja (ili referenci) u jeziku C++ nema. Pomenuću još da postoje situacije kada je vraćanje rezultata po vrednosti nemoguće. Naime, metod klase ne može da vrati kao rezultat objekat iste te klase, ali pokazivač ili referencu na njega može.