Hvad er operatørens overbelastning?
Operatøroverbelastning er en computerprogrammeringssprogfunktion, der giver en programmerer mulighed for at tilsidesætte en standardoperatør. Når operatørfunktionen er overbelastet, kan den erklæres med brugerdefinerede argumenter, der er forskellige datatyper end hvad operatøren var i stand til at håndtere som standard. De nye parametre kan være primitive eller brugerdefinerede typer. Inden for den overordnede funktion kan en programmerer manipulere parameterværdierne som ønsket. Ved at bruge operatøroverbelastning kan en programmerer oprette intuitive genveje til at manipulere brugerdefinerede datatyper eller ændre, hvordan standarddatatyper håndteres.
Når brugerdefinerede datatyper oprettes, er der ingen måde at udføre enkle operationelle opgaver på, f.eks. At tilføje to af dem sammen eller øge interne data ved at bruge den unære inkrementoperatør med datatypen. Operatører, inklusive tilføjelsessymbolet, kan tilsidesættes, så hvis de bruges som binære operatører mellem to brugerdefinerede datatyper, returnerer de et brugerdefineret resultat. På samme måde kan en unary operator, ligesom inkrementeringsoperatøren, tilsidesættes for at øge en intern værdi inden for den brugerdefinerede type.
Når en operatør er overbelastet, skal kompilatoren tage en beslutning om, hvad de skal gøre, når den støder på en overbelastet operatør. Kompilatoren beslutter den rigtige handling, der skal udføres, baseret på hvilke datatyper der bruges som operander eller i samarbejde med operatøren. Hvis operanderne, der er parameterværdier for operatørfunktionen, er brugerdefinerede datatyper, vælger kompilatoren den overbelastede funktion, der har parametre, der matcher de operander, der bruges.
Computersprog varierer i, hvordan de tillader denne type ad-hoc polymorfisme. Forskellige sprog muliggør oprettelse af nye brugerdefinerede operatører, overbelastning af alle eller nogle af dens operatører, eller muligvis overhovedet ikke tilladelse af overbelastning af operatører. C ++, C #, PHP og Perl tillader alle, at nogle af deres operatører overbelastes. Operatøroverbelastning er ikke tilladt i C, Java og Javascript.
Både operatøroverbelastning og funktionsoverbelastning generelt har været genstand for en vis debat. Nogle hævder, at det at give programmereren friheden til at ændre den måde, en operatør opfører sig, kunne introducere potentialet for at skabe utilsigtede fejl fra andre programmerere, der bruger den tilpassede kode. Det modsatte synspunkt foreslår, at tilladelse af operatøroverbelastning giver programmerere mulighed for at skabe intuitiv og kortfattet kode, der vil være lettere at forstå, koste mindre at producere og reducere fejl.