10.1. Generická funkce

Časová náročnost
Časová náročnost: 6 minut

Generická funkce definuje obecnou sadu operací, které mohou být použity na rozmanité typy dat. Určení typu zpracovávaných dat se generické funkci předává jako argument. Jakmile je generická funkce vytvořena, překladač automaticky generuje správný kód dle typu dat.

Generické funkce jsou vytvářeny pomocí klíčového slova template (česky šablona) s následující syntaxí:

upozornění
template <class Typ> návratový-typ jméno-funkce(seznam argumentů)
{
 // tělo funkce
}


Typ je jméno vlastníka prostoru pro typ dat použitý funkcí. Namísto klíčového slova class je možné použít i slovo typename.

Na příkladu si ukážeme použití generické funkce, jejíž úkolem je záměna dvou proměnných s nimiž je volána.

src/10_1.cpp
Příklad 10.1.
#include <iostream.h>

// genericka funkce
template <class X> void swapargs(X &a, X &b)
{
  X temp;

  temp = a;
  a = b;
  b = temp;
}

int main()
{
  int i=10, j=20;
  float x=10.1, y=23.3;

  cout << "Originalni i, j: " << i << ' ' << j << endl;
  cout << "Originalni x, y: " << x << ' ' << y << endl;

  swapargs(i, j); // zamen ingeger
  swapargs(x, y); // zamen float

  cout << "Zamenene i, j: " << i << ' ' << j << endl;
  cout << "Zamenene x, y: " << x << ' ' << y << endl;

  return 0;
}