Přetěžování: Porovnání verzí

Smazaný obsah Přidaný obsah
m Oashi přesunul stránku Přetížení (programování) na Přetěžování: raději nedokonavě, navíc bez popisovače (název je dosud nepoužit, nepřetížen)
V C neexistuje přetěžování, v C++ (potažmo jiných jazycích) neexistuje přetěžování na základě návratového typu.
značky: možný spam editace z Vizuálního editoru
Řádek 1:
'''Přetížení''' funkce či operátoru ({{Vjazyce|en}} {{Cizojazyčně|en|'''function overloading'''}}) je v [[programování]] taková metoda zápisu [[Zdrojový kód|zdrojového kódu]] programu, kdy je možné definovat více [[Podprogram|funkcí]] (obslužných [[Metoda (objektově orientované programování)|metod]]) se stejnými názvy, zato s různými [[implementace]]mi, a to při zachování stejného [[datový typ|typu]] výsledku a i účelu. PřetíženéVolání volánípřetížené odpovídámetody kontextu,spustí zespecifickou kteréhoimplementaci bylodanou voláno, takže podle kontextukontextem volání je proveden různý kód, pro daný kontext však stále jen jediný možný, jednoznačně určený.
 
== Přetížení funkce ==
{{redirect|Přetížení funkce|Přetížení metody}}
Rozhodnutí o&nbsp;tom, která z&nbsp;dostupných funkcí bude volána, provádí [[překladač]] podle toho, s&nbsp;jakými [[Parametr funkce|parametry]] je funkce volána (rozhoduje počet a&nbsp;[[datový typ]] předaných parametrů). Přetížení se týká i&nbsp;návratové hodnoty, kdy překladač podle typu požadované návratové hodnoty na levé straně přiřazovacího operátoru (obvykle znak <code>=</code>) vybere odpovídající funkci.
 
V&nbsp;přetěžování funkcí je rozhodnutí o&nbsp;volané funkci provedeno již při překladu (tj. staticky). Nezaměňujte proto přetěžování funkcí s&nbsp;[[Polymorfismushttp://www.linuxsoft.cz/en/article.php?id_article=1355 přepisováním funkcí (programovánímetod)|polymorfismem]], kde se o&nbsp;volání vhodné funkce rozhoduje až za běhu programu pomocí [[Virtuální funkce|virtuálních funkcí]] (tj. dynamicky), případně je tatáž funkce schopna zpracovat data různých typů.
 
=== Použití ===
Přetěžování funkcí je v&nbsp;praxi často používané jak ve [[Strukturované programování|strukturovaném programování]], tak i&nbsp;v&nbsp;[[Objektově orientované programování|objektově orientovaném programování]], kde je častotaké používáno pro přetížení konstruktorů.<ref name="PROKOP">{{Citace elektronické monografie | url = http://ncbr.chemi.muni.cz/~martinp/C3220/PCChem_C3.pdf | autor = PROKOP Martin | titul = Pokročilé programování v&nbsp;jazyce C pro chemiky – Reference, přetížení funkcí, operátory | rok = 2011 | vydavatel = NCBR | místo = Brno | datum přístupu = 2011-05-10}} – neplatný odkaz !</ref>
 
Příklad přetížení funkce v&nbsp;programovacím jazyce C++ (různé strukturytypy seznamua počet parametrů):
<source lang="c">
double prumer(double n1, double n2){
Řádek 30:
pr = prumer(d1, d2); // Tady se vola prvni funkce
pr = prumer(i1, i2); // Tady se vola druha funkce
return 0;
}
</source>
 
Příklad přetížení funkce v&nbsp;programovacím jazyce C++ (různé datové typy návratových hodnot):
<source lang="cpp">
double get_sqrt(double n){
// tady bude prislusny kod
};
 
Complex get_sqrt(double n){
// tady bude prislusny kod
};
 
int main(){
 
Complex compl;
double real;
double n;
if (n >= 0)
real = get_sqrt(n); // Tady se vola prvni funkce
else
compl = get_sqrt(n); // Tady se vola druha funkce
return 0;
}