| Č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.
|
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.
|
| 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;
}
|
| Flashová animace |
|
Kliknutím na ikonu spustíte animaci.
|