U C-u nema referenci.
Dakle:
T& je referenca na tip T
primjer pointera u C-u:
Kod:
void swap(int* a, int* b)
{
int t;
if(!a || !b)
return;
t = *a;
*a = *b;
*b = t;
}
int main(void)
{
int x=5, y=7;
swap(&x, &y);
return 0;
}
primjer u C++-u sa referencama:
Kod:
void swap(int& a, int& b)
{
int t = a;
a = b;
b = t;
}
int main()
{
int x=5, y=7;
swap(x, y);
}
referenca mora biti inicijalizirana
double d = 1.25;
double& r = d;
referenca se ne može promijeniti, sve operacije na referenci se odnose na varijablu na koju referenca pokazuje
int n = 1;
int& r = n;
r = 3; // mijenja vrijednost varijable n
preko konstantne reference ne može se mijenjati ni varijabla na koju referenca pokazuje
int n = 1;
const int& r = n;
r = 3; // compile error
Sa pointerima uvijek imaš veću mogućnost pogreške.
Evo što Strustup kaže:
Quote:
A reference is an alternative name for an object. The main use of references is for specifying arguments
and return values for functions in general and for overloaded operators (Chapter 11) in particular.
The notationX & means reference to X .
|
A ima toga još. Evo i neki link na brzinu:
http://www.parashift.com/c++-faq-lite/references.html