Přetížení funkcí v C++
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í:
- 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
#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++
#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++