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