logo

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í:



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
  1. Přetížení funkce a návratový typ
  2. Funkce, které nelze v C++ přetížit
  3. Přetížení funkcí a klíčové slovo const
  4. Přetěžování funkcí vs přepisování funkcí v C++

Nedávné články o přetěžování funkcí v C++