Polymorfisme i C ++ eksempler

Polymorfisme i C ++ eksempler
Polymorfisme, som innebærer "forskjellige former", skjer når flere klasser er koblet sammen via arvelighet. Under forskjellige sammenhenger fungerer det samme (metoden eller operatøren). Vi kan arve egenskaper og funksjoner fra en annen klasse via arvelighet. Polymorfisme bruker disse teknikkene for en rekke formål. Dette gjør oss i stand til å utføre en bestemt aktivitet på forskjellige måter. I denne artikkelen vil vi derfor diskutere eksempler på polymorfisme i C ++ ved å bruke noen eksempler innen Ubuntu 20.04. Vi har startet det med å opprette og lansere en ny C ++ -fil i terminalkonsollen.
$ 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.