Funktionsoverbelastning er en funktion ved objektorienteret programmering, hvor to eller flere funktioner kan have samme navn, men forskellige parametre. Når et funktionsnavn er overbelastet med forskellige job, kaldes det Funktionsoverbelastning. I funktionsoverbelastning skal funktionsnavnet være det samme, og argumenterne skal være forskellige. Funktionsoverbelastning kan betragtes som et eksempel på en polymorfi-funktion i C++.
Hvis flere funktioner har samme navn, men parametrene for funktionerne skal være forskellige, er det kendt som funktionsoverbelastning.
Hvis vi kun skal udføre én operation og har samme navn på funktionerne, øges programmets læsbarhed.
Antag at du skal udføre addition af de givne tal, men der kan være et hvilket som helst antal argumenter, hvis du skriver funktionen som a(int,int) for to parametre og b(int,int,int) for tre parametre, så kan være svært for dig at forstå funktionsmåden, fordi dens navn er forskelligt.
Parametrene skal følge en eller flere af følgende betingelser for funktionsoverbelastning:
ascii tabel i c
- Parametre bør have en anden type
tilføje(int a, int b)
add(dobbelt a, dobbelt b)
Nedenfor er implementeringen af ovenstå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>
- Parametre skal have et andet nummer
tilføje(int a, int b)
add(int a, int b, int c)
Nedenfor er implementeringen af ovenstå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;> }> |
>
>Produktion
sum = 12 sum = 15>
- Parametre bør have en anden rækkefølge af parametre.
add(int a, dobbelt b)
add(dobbelt a, int b)
Nedenfor er implementeringen af ovenstå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
java switch int
sum = 12.5 sum = 11.5>
Følgende er et simpelt C++ eksempel for at demonstrere funktionsoverbelastning.
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++
#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; }> |
cm til fod og tommer
>
>
Hvordan fungerer funktionsoverbelastning?
- Præcis match :- (Funktionsnavn og parameter)
- Hvis -en ikke nøjagtig match er fundet: –
->Char, Unsigned char og short forfremmes til en int.
->Float er forfremmet til dobbelt
- Hvis der ikke findes noget match :
->C++ forsøger at finde et match gennem standardkonverteringen.
- ANDET FEJL
- Funktion overbelastning og returtype
- Funktioner, der ikke kan overbelastes i C++
- Funktion overbelastning og const nøgleord
- Funktionsoverbelastning vs funktionstilsidesættelse i C++
Nylige artikler om funktionsoverbelastning i C++