Preťaženie funkcií je vlastnosť objektovo orientovaného programovania, kde dve alebo viac funkcií môže mať rovnaký názov, ale rôzne parametre. Keď je názov funkcie preťažený rôznymi úlohami, nazýva sa to preťaženie funkcie. Pri preťažovaní funkcií by mal byť názov funkcie rovnaký a argumenty by sa mali líšiť. Preťaženie funkcií možno považovať za príklad vlastnosti polymorfizmu v C++.
Ak má viacero funkcií rovnaký názov, ale parametre funkcií by sa mali líšiť, je známe ako preťaženie funkcií.
Ak musíme vykonať iba jednu operáciu a rovnaký názov funkcií zvyšuje čitateľnosť programu.
Predpokladajme, že musíte vykonať sčítanie daných čísel, ale môže existovať ľubovoľný počet argumentov, ak napíšete funkciu ako a(int,int) pre dva parametre a b(int,int,int) pre tri parametre, potom to môže byť pre vás ťažké pochopiť správanie funkcie, pretože jej názov sa líši.
Parametre by mali spĺňať jednu alebo viac ako jednu z nasledujúcich podmienok preťaženia funkcie:
c pole reťazcov programu
- Parametre by mali mať iný typ
pridať (int a, int b)
pridať (dvojité a, dvojité b)
Nižšie je uvedená implementácia vyššie uvedenej diskusie:
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ýkon
sum = 12 sum = 11.5>
- Parametre by mali mať iné číslo
pridať (int a, int b)
pridať (int a, int b, int c)
Nižšie je uvedená implementácia vyššie uvedenej diskusie:
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;> }> |
>
>
koľko je tam ovociaVýkon
sum = 12 sum = 15>
- Parametre by mali mať inú postupnosť parametrov.
pridať (int a, dvojité b)
pridať (dvojité a, int b)
Nižšie je uvedená implementácia vyššie uvedenej diskusie:
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ýkon
sum = 12.5 sum = 11.5>
Nasleduje jednoduchý príklad C++, ktorý demonštruje preťaženie funkcií.
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ýkon
Here is int 10 Here is float 10.1 Here is char* ten>
C++
reťazec na int
#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; }> |
>
>
Ako funguje preťaženie funkcií?
- Presná zhoda :-(Názov funkcie a parameter)
- Ak a nenašla sa presná zhoda: –
->Char, Unsigned char a short sú povýšené na int.
->Float je povýšený na dvojnásobok
- Ak sa nenájde žiadna zhoda :
->C++ sa pokúša nájsť zhodu prostredníctvom štandardnej konverzie.
- INÁ CHYBA
- Preťaženie funkcie a typ návratu
- Funkcie, ktoré nemožno v C++ preťažiť
- Preťaženie funkcií a kľúčové slovo const
- Preťaženie funkcií vs prepisovanie funkcií v C++
Nedávne články o preťažení funkcií v C++