Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
| Následující verze | Předchozí verze | ||
| ccpp:function-overloading [2022/05/23 08:37] – vytvořeno bures | ccpp:function-overloading [2022/05/23 08:54] (aktuální) – bures | ||
|---|---|---|---|
| Řádek 1: | Řádek 1: | ||
| - | ====== Přetěžování funkcí ====== | + | ====== Přetěžování funkcí  | 
| - | TBA | + | Přetížené  | 
| - | 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, | + | Uvedeny jsou pouze hlavičky funkcí bez jejich implementace. | 
| - | + | ||
| - | Nejzákladnější dva typy funkcí jsou: | + | |
| - |   * **S návratovou hodnotou** Taková  | + | |
| - |   * **Bez návratové hodnoty** Takové funkci říkáme **procedura**. **Návratovým typem**  | + | |
| - | + | ||
| - | ===== Deklarace funkce ===== | + | |
| - | Deklaraci funkce provádíme na globální úrovni souboru se zdrojovým kódem. To znamená na stejné úrovni, jako je definovaná funkce main. Funkce musí být vždy deklarována  | + | |
| - | + | ||
| - | Deklaraci funkce lze rozdělit  | + | |
| - | * 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ódu. Viz 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/ | + | |
| - | + | ||
| - | ==== Syntaxe definice funkce s návratovou hodnotou ==== | + | |
| <code c> | <code c> | ||
| - | typ_návratové_hodnoty identifikátor(typ param1, typ param2, ...) { | + | // Properly overloaded functions | 
| - |    | + | void foo(int a, int b); | 
| - |    | + | void foo(double a, double b); | 
| - |    | + | void foo(int a); | 
| - | ... | + | int foo(); | 
| - | return hodnota; | + | |
| - | } | + | |
| - | </ | + | |
| - | ===== Volání funkce ===== | + | // NOT properly overloaded functions | 
| - | Funkce se volá svým identifikátorem, | + | int bar(int a); | 
| - | + | double bar(int a); | |
| - | <code c> | + | |
| - | identifikátor(param1, param2, ...); | + | |
| </ | </ | ||
| - | ===== 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  | + | double  | 
| - | if (cislo < 0) | + | { | 
| - | return -cislo; | + |   return  | 
| - |   return  | + | |
| } | } | ||
| - | int main(int argc, char *argv[]) { | + | int main() | 
| - |   double  | + | { | 
| - |    | + |   double  | 
| + |    | ||
| + | return 0; | ||
| } | } | ||
| </ | </ | ||
| - | ==== 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 ==== | 
| - |    | + |   * [[https:// | 
| - | } | + |    | 
| - | + |   * [[https:// | |
| - | int main(int argc, char *argv[]) { | + | |
| - |    | + | |
| - | } | + | |
| - | </code> | + | |