5.5. Odkazy

Časová náročnost
Časová náročnost: 5 minut
upozornění Odkaz je implicitní ukazatel, který ve všech významech a účelech vystupuje jako další jméno proměnné. Jsou tři způsoby použití odkazu:
  1. Odkaz může být funkci předán.
  2. Odkaz může být funkcí vrácen.
  3. Vytvoření nezávislého odkazu.

První výhodou odkazu je to, že již nemusíme pamatovat na předávání adresy argumentu. Když je použit argument odkazu, je adresa předána automaticky. Používání odkazu nabízí čitelnější a elegantnější rozhraní, než explicitní mechanismus ukazatele. Další výhodou je, že při předávání objektu funkci jako odkaz se nevytváří kopie. Tímto způsobem se můžeme vyhnout problémům spojeným s tím, že destruktor poškodí argumentu něco užitečného jinde v programu.

upozornění Existuje omezení vůči všem typům odkazů. Nemůžeme se odkazovat na jiný odkaz. Nemůžeme získat adresu odkazu. Nemůžeme vytvářet pole odkazů. Nemůžeme mít odkazy bitového pole. Odkazy musí být inicializovány, aniž by byly členy tříd, nebo vracely hodnotu, nebo byly argumenty funkcí.

Klasickým případem předávání argumentů pomocí odkazů je funkce, která navzájem vymění hodnoty dvou argumentů, pomocí niž je volána. V našem případě půjde o výměnu dvou integer argumentů.

src/5_9.cpp
Příklad 5.9.
#include <iostream.h>

void swapargs(int &x, int &y);

int main()
{
  int i, j;

  i = 10;
  j = 19;

  cout << "Pred zamenou: ";	
  cout << "i: " << i << ", ";
  cout << "j: " << j << "\n";

  swapargs(i, j);

  cout << "Po zamene: ";
  cout << "i: " << i << ", ";
  cout << "j: " << j << "\n";

  return 0;
}

void swapargs(int &x, int &y)
{
  int t;

  t = x;
  x = y;
  y = t;
}