$ Touch Polymorphism.CC
$ nano polymorfisme.CC
Eksempel 01: Funksjonsoverbelastning
Når argumentene deres er unike, kan du bruke to primære funksjoner med samme tittel i C++. Ulike metoder kalles basert på mengden og slags parametere, og dette konseptet er kjent som funksjonsoverbelastning. Vi har startet vårt første eksempel med standard “STD” navneområde og “iostream” input-output header. Tre brukerdefinerte samme navn “val” -funksjoner er definert, hver inneholder en enkelt cout-uttalelse. Den første funksjonen inneholder en heltallstypeparameter, den andre inneholder parameteren med dobbel type, og den siste inneholder to parametere av dobbel type. De to første "val" -funksjonene får ganske enkelt verdi fra Main () -metoden og viser den på skallet via cout -setningen. Den tredje får to verdier av dobbelt type fra hoved () og viser summen av begge verdiene på skallet ved hjelp av cout-leddet. Hovedfunksjonen () er ganske enkelt å kalle tre metoder med samme navn etter hverandre ved å passere forskjellige verdier.
#inkludere
ved hjelp av navneområdet STD;
int val (int n1)
cout <<"Integer: "<< n1 <
dobbel val (dobbel n1)
cout <<"Double: "<< n1 <
dobbel val (dobbel n1, dobbel n2)
cout << "Sum: "<< n1+n2<
int main ()
Val (10);
Val (9.25);
Val (4.1, 8.23);
retur 0;
Samlingen av denne C ++ -koden er vellykket ved å bruke G ++ -kompilatoren på skallet.
$ g ++ polymorfisme.CC
Etter å ha utført koden, har vi verdiene som vises på konsollen nedenfor.
$ ./en.ute
Eksempel 02: Overbelastning av operatør
Operatøroverbelastning ligner overbelastning av metoden fordi den bruker det samme tegnet, men forskjellige operander for distinkte operatørmetoder. Så vi har startet dette eksemplet med å erklære en ny klasse “A” etter navneområdet og headerbiblioteket. Klasse A inneholder et privat datamedlem av heltallstype “V”, og en konstruktørfunksjon a () som brukes til å initialisere variabelen “V” med en verdi på 5. Her kommer operatørfunksjonen for å øke verdien av “V” med 3. Som navnet viser, har operatøren “+” blitt overbelastet her. Showet () -funksjonen er her for å vise den økte verdien av en variabel “V.”Ved opprettelse av et objekt vil konstruktøren a () bli utført. Objektet har blitt brukt til å kalle "++" -operatørfunksjonen. OBJ brukes igjen til å kalle showet () for å vise den økte verdien.
#inkludere
ved hjelp av navneområdet STD;
klasse A
privat:
int v;
offentlig:
A (): v (5)
void operatør ++ ()
v = v + 3;
void show ()
cout << "Value after increment: " << v << endl;
;
int main ()
En obj;
++obj;
obj.forestilling();
retur 0;
Etter samlingen har vi ingen feil. Den økte verdien av variabel “V” er vist på vår terminalskjerm når vi kjører denne koden.
$ g ++ polymorfisme.CC
$ ./en.ute
Eksempel 03: Funksjonsoverskridende
Baseklassen og dens etterkommer underklasser kan ha samme navnemetoder. Når vi bruker en forekomst fra underklassen for å påkalle metoden, kjøres den utvidede klassens funksjon i stedet for foreldreklassen. Som et resultat vil forskjellige funksjoner kjøres avhengig av objektet som påkaller metoden. I C ++ blir dette referert til som metode som overstyrer. Så vi har initialisert tre klasser i koden. Klasse A er foreldreklassen for begge barneklasser B og C. Alle klasser har samme navnefunksjon, "Show ()", viser spesifikasjonene via COUT -uttalelsen. Main () -metoden har laget 3 objekter for 3 klasser for å kalle de respektive funksjonene.
#inkludere
ved hjelp av navneområdet STD;
klasse A
offentlig:
void show ()
cout << "Base class A… " << endl;
;
Klasse B: Offentlig a
offentlig:
void show ()
cout << "Derived class B… " << endl;
;
Klasse C: Offentlig a
offentlig:
void show ()
cout << "Derived class C… " << endl;
;
int main ()
A o1;
O1.forestilling();
B o2;
O2.forestilling();
C o3;
O3.forestilling();
retur 0;
Vi har fått alle metodene utført fra alle klassene når vi kjører denne kodefilen.
Eksempel 04: Virtuelle funksjoner
Hvis vi bruker en "peker" -peker "for å referere til et derivatklasseobjekt, kan det hende at vi ikke en gang er i stand til å omgå metoder i C++. Under disse omstendighetene sikrer bruken av virtuelle metoder i foreldreklassen at metoden kan overstyres. Så vi har opprettet en foreldreklasse A med barneklasse B. Begge klassene har samme navnefunksjoner, men foreldreklassefunksjonen inneholder nøkkelordet “Virtual.”I Main () har B -klasseobjektet“ B ”blitt brukt som en referanse til foreldreklassen“ A ”Pointer -objektet“ A.”
#inkludere
ved hjelp av navneområdet STD;
klasse A
offentlig:
Virtual void show ()
cout << "Base class A… " << endl;
;
Klasse B: Offentlig a
offentlig:
void show ()
cout << "Derived class B… "retur 0;
Etter utførelse av denne koden har den avledede klassemetoden blitt utført ved hjelp av det virtuelle nøkkelordet i den overordnede brukerdefinerte funksjonen for samme navn.
$ g ++ polymorfisme.CC
$ ./en.outg
Konklusjon:
Dette handlet om å bruke polymorfisme i C ++ ved bruk av noen av de grunnleggende konseptene. For å gjøre det jevn. Vi håper på de beste tilbakemeldingene for dette arbeidet.