ccpp:function-overloading

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Následující verze
Předchozí verze
ccpp:function-overloading [2022/05/23 08:37] – vytvořeno buresccpp:function-overloading [2022/05/23 08:54] (aktuální) bures
Řádek 1: Řádek 1:
-====== Přetěžování funkcí ====== +====== Přetěžování funkcí (function overloading) ====== 
-TBA +Přetížené funkce (overloaded functionsjsou takové, které nesou stejný název, ale liší se formálními parametryKompilátor pak během kompilace rozhodnekterá verze etížené funkce bude volána na základě skutečných parametrů
-Funkce představuje ucelenou část programu, která se dá opakovaně volat z jiných částí programu. +===== Příklady přetížených funkcí ===== 
-Funkce má přiřazený vlastní identifikátor, vstupní parametry a typ návratové hodnoty. +Uvedeny jsou pouze hlavičky funkcí bez jejich implementace.
- +
-Nejzákladnější dva typy funkcí jsou: +
-  * **S návratovou hodnotou** Taková funkce má uvedený typ návratové hodnoty (výsledkua musí vždy uvnitř svého těla vracet hodnotu stejného datového typu pomocí příkazu //return hodnota;// +
-  * **Bez návratové hodnoty** Takové funkci říkáme **procedura**. **Návratovým typem** takové funkce je z pravidla **void**. Procedura nemusí volat příkaz return. Pokud chceme proceduru předčasně ukončitpříkaz return se volá bez hodnoty - //return;//  +
- +
-===== Deklarace funkce ===== +
-Deklaraci funkce provádíme na globální úrovni souboru se zdrojovým kódemTo znamená na stejné úrovnijako je definovaná funkce main. Funkce musí být vždy deklarována ed tím, než dojde k jejímu volání (zdrojový kód se zpracovává shora dolů). Funkci nelze deklarovat uvnitř jiné funkce+
- +
-Deklaraci funkce lze rozdělit na 2 základí části: +
-  * hlavička funkce +
-  * tělo funkce (implementace) +
- +
-V některých případech je možné provést dopřednou deklaraci hlavičky funkce a implementaci uvést až později ve zdrojovém kóduViz příklady. +
- +
-==== Hlavička funkce ==== +
-Hlavička funkce definuje: +
-  * identifikátor - název funkce +
-  * seznam parametrů - formální parametry +
-  * typ návratové hodnoty +
- +
-==== Tělo funkce ==== +
-Tělo je tvořeno vlastním kódem funkce/procedury ve složených závorkách (blok). Pokud se jedná o funkci, která má definovaný jiný typ návratové hodnoty než //void//, tak musí všechny možné průchody danýmkódem končit voláním //return hodnota;//, kde datový typ hodnoty musí odpovídat typu návratové hodnoty v hlavičce. +
- +
-==== Syntaxe definice funkce s návratovou hodnotou ====+
 <code c> <code c>
-typ_návratové_hodnoty identifikátor(typ param1, typ param2, ...) { +// Properly overloaded functions 
-  // Tělo funkce +void foo(int a, int b)
-  prikaz1+void foo(double a, double b)
-  prikaz2+void foo(int a)
-  ... +int foo();
-  return hodnota+
-+
-</code>+
  
-===== Volání funkce ===== +// NOT properly overloaded functions 
-Funkce se volá svým identifikátorem, za kterým následuje kulatá závorka se seznamem **skutečných parametrů**. Pokud funkce vrací výsledek (//není typu void//), je po jejím vykonání nahrazeno volání výsledkem. +int bar(int a); 
- +double bar(int a);
-<code c> +
-identifikátor(param1, param2, ...);+
 </code> </code>
  
-===== Ukázky ===== +Ukázka včetně implementace
-==== Funkce absolutní hodnota ====+
 <code c> <code c>
-// Hlavička souboru+int soucet(int l, int p) 
 +
 +  return l + p; 
 +}
  
-double absolutniHodnota(double cislo) { +double soucet(double l, double p) 
-  if (cislo < 0) +
-    return -cislo; +  return l + p;
-  return cislo;+
 } }
  
-int main(int argc, char *argv[]) { +int main() 
-  double vysl absolutniHodnota(-42.5); +
-  printf("%f\n"vysl);+  double v1 soucet(5.5, 4.0); 
 +  int v2 = soucet(-312)
 +  return 0;
 } }
 </code> </code>
  
-==== Procedura pro pozdravení ==== +===== Úlohy k procvičení ===== 
-<code c> +  * Délka 2D a 3D vektoru 
-// Hlavička souboru+  * Vzdálenost dvou bodů v rovině a prostoru
  
-void pozdrav() { +==== Zdroje ==== 
-  puts("Ahoj"); +  * [[https://www.w3schools.com/cpp/cpp_function_overloading.asp|C++ Function Overloading]
-+  * [[https://en.cppreference.com/w/cpp/language/overload_resolution|Overload resolution]] 
- +  * [[https://www.cplusplus.com/doc/tutorial/functions2/|Overloads and templates]]
-int main(int argc, char *argv[]) { +
-  pozdrav(); +
-+
-</code>+
  
  • ccpp/function-overloading.1653287830.txt.gz
  • Poslední úprava: 2022/05/23 08:37
  • autor: bures