logo

Functie-overbelasting in C++

Overbelasting van functies is een kenmerk van objectgeoriënteerd programmeren waarbij twee of meer functies dezelfde naam maar verschillende parameters kunnen hebben. Wanneer een functienaam wordt overbelast met verschillende taken, wordt dit Functie-overbelasting genoemd. Bij overbelasting van functies moet de functienaam hetzelfde zijn en moeten de argumenten verschillend zijn. Overbelasting van functies kan worden beschouwd als een voorbeeld van een polymorfismekenmerk in C++.

Als meerdere functies dezelfde naam hebben, maar de parameters van de functies verschillend moeten zijn, wordt dit functie-overbelasting genoemd.
Als we slechts één bewerking hoeven uit te voeren en dezelfde naam voor de functies hebben, wordt de leesbaarheid van het programma vergroot.
Stel dat u de gegeven getallen moet optellen, maar er kunnen een willekeurig aantal argumenten zijn. Als u de functie schrijft zoals a(int,int) voor twee parameters, en b(int,int,int) voor drie parameters, dan Het kan voor u moeilijk zijn om het gedrag van de functie te begrijpen, omdat de naam ervan verschilt.

De parameters moeten voldoen aan een of meer van de volgende voorwaarden voor functieoverbelasting:



np.waar
  • Parameters moeten een ander type hebben

optellen(int a, int b)
optellen(dubbel a, dubbel b)

Hieronder vindt u de implementatie van de bovenstaande discussie:

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;> }>

>

>

Uitvoer

sum = 12 sum = 11.5>
  • Parameters moeten een ander nummer hebben

optellen(int a, int b)
optellen(int a, int b, int c)

Hieronder vindt u de implementatie van de bovenstaande discussie:

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;> }>

>

>

Uitvoer

sum = 12 sum = 15>
  • Parameters moeten een andere reeks parameters hebben.

optellen(int a, dubbel b)
optellen(dubbel a, int b)

Hieronder vindt u de implementatie van de bovenstaande discussie:

C++


Java leest het bestand regel voor regel



#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; }>

>

>

Uitvoer

sum = 12.5 sum = 11.5>

Hieronder volgt een eenvoudig C++-voorbeeld om overbelasting van functies aan te tonen.

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;> }>

>

>

Uitvoer

 Here is int 10 Here is float 10.1 Here is char* ten>

C++

zweven naar touw




#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; }>

>

>

Hoe werkt functieoverbelasting?

  • Exacte overeenkomst :- (Functienaam en parameter)
  • Als A er is geen exacte match gevonden:

->Char, Unsigned char en short worden gepromoveerd tot een int.

->Float wordt gepromoveerd tot verdubbelen

  • Als er geen match wordt gevonden :

->C++ probeert een match te vinden via de standaardconversie.

  • ANDERE FOUT
  1. Functieoverbelasting en retourtype
  2. Functies die in C++ niet overbelast kunnen worden
  3. Functie-overbelasting en const-trefwoord
  4. Functie-overbelasting versus functie-overschrijving in C++

Recente artikelen over functie-overbelasting in C++