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> | + | |