Přetěžování funkcí je vlastnost objektově orientovaného programování, kde dvě nebo více funkcí mohou mít stejný název, ale různé parametry. Když je název funkce přetížen různými úlohami, nazývá se přetížení funkcí. V přetížení funkcí Název funkce by měl být stejný a argumenty by se měly lišit. Přetížení funkcí lze považovat za příklad vlastnosti polymorfismu v C++.
Pokud má více funkcí stejný název, ale parametry funkcí by se měly lišit, nazývá se to přetížení funkcí.
Pokud musíme provést pouze jednu operaci a mít stejný název funkcí, zvyšuje se čitelnost programu.
Předpokládejme, že musíte provést sčítání daných čísel, ale může být libovolný počet argumentů, pokud napíšete funkci jako a(int,int) pro dva parametry a b(int,int,int) pro tři parametry, pak to může být pro vás obtížné porozumět chování funkce, protože její název se liší.
Parametry by měly splňovat jednu nebo více z následujících podmínek pro přetížení funkcí:
java index
- Parametry by měly mít jiný typ
přidat (int a, int b)
přidat (dvojité a, dvojité b)
Níže je uvedena implementace výše uvedené diskuse:
C++
#include> using> namespace> std;> void> add(>int> a,>int> b)> {> >cout <<>'sum = '> << (a + b);> }> void> add(>double> a,>double> b)> {> >cout << endl <<>'sum = '> << (a + b);> }> // Driver code> int> main()> {> >add(10, 2);> >add(5.3, 6.2);> >return> 0;> }> |
>
>Výstup
sum = 12 sum = 11.5>
- Parametry by měly mít jiné číslo
přidat (int a, int b)
přidat (int a, int b, int c)
Níže je uvedena implementace výše uvedené diskuse:
C++
#include> using> namespace> std;> void> add(>int> a,>int> b)> {> >cout <<>'sum = '> << (a + b);> }> void> add(>int> a,>int> b,>int> c)> {> >cout << endl <<>'sum = '> << (a + b + c);> }> // Driver code> int> main()> {> >add(10, 2);> >add(5, 6, 4);> >return> 0;> }> |
>
>Výstup
sum = 12 sum = 15>
- Parametry by měly mít jinou sekvenci parametrů.
přidat (int a, dvojité b)
přidat (dvojité a, int b)
Níže je uvedena implementace výše uvedené diskuse:
C++
#include> using> namespace> std;> void> add(>int> a,>double> b)> {> >cout<<>'sum = '><<(a+b);> }> void> add(>double> a,>int> b)> {> >cout<'sum = '<<(a+b); } // Driver code int main() { add(10,2.5); add(5.5,6); return 0; }> |
>
>Výstup
sum = 12.5 sum = 11.5>
Následuje jednoduchý příklad C++, který demonstruje přetížení funkcí.
CPP
java pár
#include> using> namespace> std;> void> print(>int> i) {> >cout <<>' Here is int '> << i << endl;> }> void> print(>double> f) {> >cout <<>' Here is float '> << f << endl;> }> void> print(>char> const> *c) {> >cout <<>' Here is char* '> << c << endl;> }> int> main() {> >print(10);> >print(10.10);> >print(>'ten'>);> >return> 0;> }> |
>
>Výstup
Here is int 10 Here is float 10.1 Here is char* ten>
C++
algoritmus binárního vyhledávání
#include> using> namespace> std;> void> add(>int> a,>int> b)> {> >cout<<>'sum ='><<(a+b);> }> void> add(>int> a,>int> b,>int> c)> {> >cout<'sum ='<<(a+b+c); } main() { add(10,2); add(5,6,4); return 0; }> |
>
>
C++
#include> using> namespace> std;> void> add(>int> a,>double> b)> {> >cout<<>'sum ='><<(a+b);> }> void> add(>double> a,>int> b)> {> >cout<'sum ='<<(a+b); } main() { add(10,2.5); add(5.5,6); return 0; }> |
>
>
Jak funguje přetížení funkcí?
- Přesná shoda :-(Název a parametr funkce)
- Li A nebyla nalezena přesná shoda: –
->Char, Unsigned char a short jsou povýšeny na int.
->Float je povýšen na dvojnásobek
- Pokud není nalezena žádná shoda :
->C++ se snaží najít shodu pomocí standardní konverze.
- JINÁ CHYBA
- Přetížení funkce a návratový typ
- Funkce, které nelze v C++ přetížit
- Přetížení funkcí a klíčové slovo const
- Přetěžování funkcí vs přepisování funkcí v C++
Nedávné články o přetěžování funkcí v C++