Under typiske omstændigheder metoder i C + + kan ikke dele et navn. Dette forårsager fejl ved at indføre mulighed for forveksling i metode referencer. En programmør , der ønsker at bruge det samme navn for en metode, men omdefinere denne metode baseret på forskellige parametre , har to muligheder . Programmøren kan overbelaste den funktion ved at bruge samme navn, men ændrer de argumenter af metoden. Også, hvis programmøren bruger en afledt klasse , han eller hun kan tilsidesætte en funktion af en base klasse til at udføre forskellige funktioner. Overbelastning Metoder
Når en programmør erklærer en metode , dette navn normalt ikke kan udpege en anden metode med anden kode inde i det. Udelukkelsen til dette er, når argumenterne fra metoden forskellige. For eksempel kan en programmør definere metoden "Beregn " for at tage et heltal som argument : Hej
int beregne ( int x )
Ifølge reglerne for C + +, anden navngiven metode " beregne ", som tager et heltal som argument ikke kunne eksistere , uanset kode inde metoden . Men kunne en anden metode med samme navn og forskellige argumenter eksisterer : Hej
int beregne (dobbelt x )
type eller argument , når metoden kaldes ville beslutte, hvilken metode udfører
.
Begrænsninger
findes der begrænsninger for, hvordan metoden overbelastning virker i C + +. For at overbelaste en metode navn, skal argumenterne bruge forskellige datatyper eller forskellige i mængden af udpegede argumenter. Metoder , der returnerer forskellige værdier , men deler et navn og identisk argument listen , er ikke tilladt i C + +. Metoder med identiske navne og argumenter, der kun adskiller sig på grund af en anden type navn ( eller give et eksisterende datatype et andet navn) er heller ikke tilladt . For eksempel : Hej
typdef int fake_int ,
int skrive ( int x )
double skrive ( int x )
int skrive ( fake_int x ) < br >
Ingen af disse tre metode definitioner følger reglerne for metoden overbelastning og vil returnere en fejl.
Udledning
anden måde at overbelaste en metoden er gennem klasse afledning . Ved etablering af klasse kan en programmør lave en klasse arver funktionalitet fra en anden klasse . Den arve (afledt ) klasse kan bruge de metoder fra klassen den arver fra (base klasse) . En base klasse ( class X) kunne have en metode "print" defineres. En anden klasse (klasse Y ), som stammer fra klasse X har også adgang til at udskrive. Imidlertid kunne klasse Y også definere sin egen version af print-metoden . I dette tilfælde vil print henrettet metode være den er defineret i klassen Y, medmindre programmøren angiver , at klassen X version af print bør udføre.
Eksempler
et eksempel på en metode, omdefineret gennem en afledt klasse involverer to klasser . Første, basisklassen : Hej
class Første (
offentligt : Hej
int x ;
int returnX () {
afkast x ;
}
};
Derefter en afledt klasse, der omdefinerer " returnX () "-metoden : Hej
klasse Second : public First {
offentlig : Hej
int returnX () {
tilbagevenden x +1
}
};
< p > den " Second " klasse har adgang til variablen "x" og metoden " returnX () ", der er en del af den "første" klassen. Men Second omdefinerer returnX ()-metoden i sin egen definition. Dette betyder, at når et objekt af en klasse Second kalder returnX () metode, vil returværdien være x +1 .