2.9. Úvod do přetěžování

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

Po třídách je jednou z nejdůležitějších částí C++ přetěžování funkcí. Přetěžování funkcí nejen poskytuje mechanismus, jímž C++ poskytuje jeden typ polymorfismu, ale také utváří základ, na němž může být programovací prostředí dynamicky rozšiřováno.

V C++ mohou dvě nebo více funkcí sdílet stejné jméno tak dlouho, pokud se liší typy jejich argumentů, nebo se liší počet jejich argumentů, nebo obojí. Když dvě nebo více funkcí sdílí stejné jméno označují se jako přetížené.

Je velmi snadné přetížit funkci. Prostě deklarujeme a definujeme všechny požadované verze. Správnou verzi vybere překladač podle typu nebo počtu argumentů, použitých pro volání funkce.

upozornění V C++ však lze přetěžovat i operátory.

Nyní si přetěžování funkcí ukážeme na příkladu. V jazyce C máme funkce abs(), labs(), fabs(), které vracejí absolutní hodnotu z hodnot integer, long integer a float. Naším úkolem bude napsat přetíženou funkci abs(), která vrátí absolutní hodnotu zadaného čísla.

src/2_4.cpp
Příklad 2.4.
#include <iostream.h>

int abs(int n);
long abs(long n);
double abs(double n);

int main()
{
  cout << "Absolutni hodnota -10: " << abs(-10) << "\n";
  cout << "Absolutni hodnota -10L: " << abs(-10L) << "\n";
  cout << "Absolutni hodnota -10.01: " << abs(-10.01) << "\n";

  return 0;
}

// abs() pro int
int abs(int n)
{
  cout << "Abs() pro Integer\n";
  return n<0 ? -n : n;
}

// abs() pro longs
long abs(long n)
{
  cout << "Abs() pro long\n";
  return n<0 ? -n : n;
}

// abs() pro doubles
double abs(double n)
{
  cout << "Abs() pro double\n";
  return n<0 ? -n : n;
}

flash\pret.swf
Flashová animace
Kliknutím na ikonu spustíte animaci.