I denne vejledning lærer vi om funktionens overbelastning i C ++ med eksempler.
I C ++ kan to funktioner have samme navn, hvis antallet og / eller typen af argumenter, der er sendt, er forskellig.
Disse funktioner har samme navn, men forskellige argumenter kaldes overbelastede funktioner. For eksempel:
// same name different arguments int test() ( ) int test(int a) ( ) float test(double a) ( ) int test(int a, double b) ( )
Her er alle 4 funktioner overbelastede funktioner.
Bemærk, at returneringstyperne for alle disse 4 funktioner ikke er de samme. Overbelastede funktioner har måske ikke forskellige returtyper, men de skal have forskellige argumenter. For eksempel,
// Error code int test(int a) ( ) double test(int b)( )
Her har begge funktioner samme navn, samme type og samme antal argumenter. Derfor vil compileren kaste en fejl.
Funktion Overbelastning ved hjælp af forskellige typer parametre
// Program to compute absolute value // Works for both int and float #include using namespace std; // function with float type parameter float absolute(float var)( if (var < 0.0) var = -var; return var; ) // function with int type parameter int absolute(int var) ( if (var < 0) var = -var; return var; ) int main() ( // call function with int type parameter cout << "Absolute value of -5 = " << absolute(-5) << endl; // call function with float type parameter cout << "Absolute value of 5.5 = " << absolute(5.5f) << endl; return 0; )
Produktion
Absolut værdi på -5 = 5 Absolut værdi på 5,5 = 5,5Arbejder med overbelastning for den absolutte () funktion
I dette program overbelaster vi absolute()
funktionen. Baseret på den type parameter, der er sendt under funktionsopkaldet, kaldes den tilsvarende funktion.
Funktion Overbelastning ved hjælp af forskellige antal parametre
#include using namespace std; // function with 2 parameters void display(int var1, double var2) ( cout << "Integer number: " << var1; cout << " and double number: " << var2 << endl; ) // function with double type single parameter void display(double var) ( cout << "Double number: " << var << endl; ) // function with int type single parameter void display(int var) ( cout << "Integer number: " << var << endl; ) int main() ( int a = 5; double b = 5.5; // call function with int type parameter display(a); // call function with double type parameter display(b); // call function with 2 parameters display(a, b); return 0; )
Produktion
Heltal nummer: 5 Flydende nummer: 5,5 Heltal nummer: 5 og dobbelt nummer: 5,5
Her display()
kaldes funktionen tre gange med forskellige argumenter. Afhængig af antallet og typen af argumenter, der sendes, display()
kaldes den tilsvarende funktion.
Returtypen for alle disse funktioner er den samme, men det behøver ikke være tilfældet for funktionsoverbelastning.
Bemærk: I C ++ er mange standardbiblioteksfunktioner overbelastede. For eksempel sqrt()
kan funktionen tage double
, float
, int,
etc. som parametre. Dette er muligt, fordi sqrt()
funktionen er overbelastet i C ++.