Funktionsöverbelastning är en egenskap hos objektorienterad programmering där två eller flera funktioner kan ha samma namn men olika parametrar. När ett funktionsnamn är överbelastat med olika jobb kallas det Funktionsöverbelastning. I Function Overloading ska funktionsnamnet vara detsamma och argumenten ska vara olika. Funktionsöverbelastning kan betraktas som ett exempel på en polymorfismfunktion i C++.
Om flera funktioner har samma namn men parametrarna för funktionerna ska vara olika kallas funktionsöverbelastning.
Om vi bara måste utföra en operation och har samma namn på funktionerna ökar programmets läsbarhet.
Anta att du måste göra addition av de givna talen men det kan finnas hur många argument som helst, om du skriver funktionen som a(int,int) för två parametrar och b(int,int,int) för tre parametrar så kan vara svårt för dig att förstå funktionens beteende eftersom dess namn skiljer sig.
Parametrarna bör följa något eller flera av följande villkor för funktionsöverbelastning:
en rad objekt java
- Parametrar bör ha en annan typ
add(int a, int b)
add(dubbel a, dubbel b)
Nedan är implementeringen av ovanstående diskussion:
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;> }> |
>
>Produktion
sum = 12 sum = 11.5>
- Parametrar bör ha ett annat nummer
add(int a, int b)
add(int a, int b, int c)
Nedan är implementeringen av ovanstående diskussion:
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;> }> |
>
>
1 av 1000Produktion
sum = 12 sum = 15>
- Parametrar bör ha en annan sekvens av parametrar.
add(int a, dubbel b)
add(dubbel a, int b)
Nedan är implementeringen av ovanstående diskussion:
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; }> |
>
>Produktion
sum = 12.5 sum = 11.5>
Följande är ett enkelt C++-exempel för att demonstrera funktionsöverbelastning.
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;> }> |
>
>Produktion
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++
konvertera nfa till dfa
#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; }> |
>
>
Hur fungerar funktionsöverbelastning?
- Exakt matchning :- (Funktionsnamn och parameter)
- Om a inte exakt matchning hittades: –
->Char, Unsigned char och short befordras till en int.
->Float är befordrad till dubbel
- Om ingen matchning hittas :
->C++ försöker hitta en matchning genom standardkonverteringen.
- ANNAT FEL
- Funktion överbelastning och returtyp
- Funktioner som inte kan överbelastas i C++
- Funktionsöverbelastning och const nyckelord
- Funktionsöverbelastning vs funktionsöverstyrning i C++
Nya artiklar om funktionsöverbelastning i C++