Skip to main content

Hvad overbelaster funktionen?

Overbelastning af funktion 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 floats eller decimalnumre, ville denne funktion imidlertid ikke være relevant.Så en anden overbelastet funktion ville være nødvendig, defineret som en funktion kaldet tilføj, der tager sine input to floats.Funktionerne gør 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 dens inputparametre og dens returtype.Ved hjælp af det foregående eksempel kan man overveje, om begge overbelastede tilføjelsesfunktioner 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 kan tilføjelsesfunktionen, der tager to hele tal, returnere hele nummersummen, og den tilføjelsesfunktion, der tager to decimalnumre, kunne dog returnere det decimalnummersum., betragtes 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 er ønsket.Parametre kan også defineres tvetydigt, så det er meget vigtigt for overbelastede funktioner, der kaldes korrekt.Hvis man f.eks, eller omvendt, fordi de har samme navn.Tammensiklige parametre som disse bør undgås, hvis det er muligt, og hvis de ikke kan være det, skal der tages stor omhu for at sikre, at den rigtige 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 overvejelse af 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.