Hvad er overbelastning af funktion?

Funktionsoverbelastning er en funktion af mange programmeringssprog, hvor flere metoder kan oprettes med samme navn, men med forskellige inputparametre eller returtyper. Dette er en almindelig funktion i objektorienteret programmering; Konstruktører kan især have flere forskellige overbelastede varianter. I det væsentlige er overbelastning af funktionen nyttig, når to funktioner gør meget ens ting og kan tage flere typer input for at gøre det. Konstruktører kan let overbelastes, fordi de ikke har nogen eksplicit returtype specificeret, så blot at ændre inputparametrene for en konstruktør ville være gyldig overbelastning.

Den første måde, hvorpå en funktion kan overbelastes, er ved at ændre dens inputparametre. For eksempel kan man overveje en funktion kaldet "Tilføj", der tager sine input to hele tal. Formålet med denne funktion er temmelig indlysende; Det er beregnet til at finde summen af ​​to hele tal.

Hvis man ville finde summen af ​​to flydere eller decimalnumre, er dette funktion imidlertidIon ville ikke være anvendelig. Så en anden overbelastet funktion ville være nødvendig, defineret som en funktion kaldet "Tilføj", der tager sine input to floats. Funktionerne er i det væsentlige den samme ting, men funktionsoverbelastning er nødvendig, fordi deres input er markant forskellige.

Den anden måde, hvorpå en funktion kan overbelastes, er at ændre både inputparametre og dens returtype. Ved hjælp af det foregående eksempel kan man overveje, om begge overbelastede "Tilføj" -funktioner havde en tomrumsafkasttype; Det vil sige, de vendte ikke tilbage. Dette ville stadig være gyldig overbelastning af funktion, men returtyperne for de to metoder kunne også ændres. I et andet gyldigt tilfælde af overbelastning kunne funktionen "Tilføj", der tager to hele tal, returnere det hele talesummen, og funktionen "Tilføj", der tager to decimalnumre, kan returnere det decimalnummersum.

blot ændring af returtypen OF En funktion betragtes dog ikke som gyldig overbelastning af funktion. Ændring af kun returtypen af ​​en funktion resulterer i tvetydighed, fordi det ikke er klart fra metodesignaturen, som returtypen ønskes. Parametre kan også defineres tvetydigt, så det er meget vigtigt for overbelastede funktioner, der kaldes korrekt. For eksempel, hvis man har en overbelastet funktion, der har et helt tal som inputparameter, og en anden, der har et decimaltal som en parameter, ville det være meget let for nogen at ved et uheld kalde decimalnummerfunktionen i stedet for hele nummerfunktionen eller vice versa, fordi de har samme navn. Tammensigende parametre som disse bør undgås, og hvis de ikke kan være det, skal man sørge for at sikre, at den rette overbelastede funktion kaldes på de rigtige tidspunkter.

Funktionsoverbelastning er nyttig til at oprette relaterede funktioner med forskellige inputtyper, og det giver kode en masse fleksibilitet. En sidste overvejelsePå overbelastede funktioner er, at tilstrækkelig kommentar er vigtig. Selvom det måske er klart ved forskellige inputparametre, hvilken version af en overbelastet funktion er den rigtige til en bestemt situation, er det måske ikke altid klart, hvad funktionen gør anderledes end dens andre overbelastede partnere.

ANDRE SPROG

Hjalp denne artikel dig? tak for tilbagemeldingen tak for tilbagemeldingen

Hvordan kan vi hjælpe? Hvordan kan vi hjælpe?