Referencje
Referencje pojawiły się w C++. Referencję możemy traktować jako inną nazwę na już istniejący obiekt. O wielkiej przydatności referencji przekonamy się już niedługo podczas omawiania struktur i funkcji. Na razie zapoznamy się ze składnią.
-
Jeśli T jest pewnym typem, to T& określa referencję do typu T
- Zmienną referencyjną, albo krótko referencję, musimy zainicjalizować w momencie jej deklaracji (są od tego wyjątki, np. składowe klas i struktur, które są referencjami inicjalizujemy na liście inicjalizacyjnej).
int n=10;
int& ref = n;
ref = 20;
cout << n; // wypisze 20
Jak widać referencja to po prostu dodatkowa nazwa na istniejący obiekt. Możemy używać referencji tak jak samej zmiennej. Wszelkie operacje na referencji będą miały taki sam skutek, jakbyśmy działali bezpośrednio na obiekcie, do którego jest ta referencja.
Jak to działa?
Referencja to tak naprawdę stały wskaźnik. Składnia referencji zabrania wykonywania operacji znanych dla wskaźników: referencji nie można ustawić na inny obiekt, nie jest dostępna arytmetyka referencji. Po kompilacji (w kodzie maszynowym) referencje i wskaźniki niczym się nie różnią.
Korzystając z referencji świadomie rezygnujemy z pewnych możliwości oferowanych nam przez wskaźniki. W zamian dostajemy:
- łatwiejszą notację - nie musimy używać operatora wyłuskania do odwoływania się do obiektu
- większe bezpieczeństwo - brak arytmetyki dla referencji znacznie utrudnia popełnienie błędów związanych z niepoprawnym odwołaniem do pamięci
Przykład - referencje.