C ++

C ++ virtuell funksjon

C ++ virtuell funksjon
I denne artikkelen skal vi diskutere den virtuelle funksjonen i programmeringsspråket C ++. En virtuell funksjon brukes i C ++ for å oppnå kjøretid / dynamisk polymorfisme. Vi vil se flere eksempler for å forstå begrepet den virtuelle funksjonen i C++.

En virtuell funksjon er en medlemsfunksjon som er definert i basisklassen / overordnet klasse og definert på nytt i den avledede klassen. Virtuell funksjon gjør det mulig å ringe den avledede klasseversjonen av funksjonen ved hjelp av referansen eller pekeren til basisklassen.

La oss se noen eksempler for å forstå begrepet virtuell funksjon.

I det første eksemplet vil vi se oppførselen til den ikke-virtuelle funksjonen, og deretter i det andre eksemplet vil vi forklare oppførselen til en virtuell funksjon.

Eksempel 1

I følgende eksempelkode har vi to klasser: basisklasse og avledet klasse.

Baseklassen har en medlemsfunksjon, i.e., vise(). Den avledede klassen arves fra basisklassen og omdefinerte display () -funksjonen.

Deretter har vi erklært en peker til basistypetypen og tildelt et objekt av den avledede klassen. Så når vi kaller display () -funksjonen ved hjelp av baseklassetypepekeren, vil baseklassefunksjonen bli kalt. Du kan se utdataene nedenfor.

Men i slike tilfeller gir C ++ en måte å kalle den avledede klassefunksjonen ved å erklære baseklassefunksjonen som virtuell. Vi får se et annet eksempel for å forstå dette.

#inkludere
bruker navneområde std;
klasse Base_Class

offentlig:
ugyldig visning ()

cout << "I am in Base class" << endl;

;
klasse Derived_Class: offentlig Base_Class

offentlig:
ugyldig visning ()

cout << "I am in Derived class" retur 0;

Eksempel 2

I dette eksemplet har vi definert display () -funksjonen som en virtuell funksjon i baseklassen. Den eneste forskjellen fra forrige program er at vi har lagt til et virtuelt nøkkelord foran "void display ()" i basisklassen.

Nå, hvis du ser utdataene, skrives det ut, "Jeg er i avledet klasse", noe som indikerer at den avledede klassefunksjonen kalles.

Det virtuelle nøkkelordet (virtuell funksjon) i baseklassen er ansvarlig for å sikre at riktig funksjon kalles for et objekt.

#inkludere
bruker navneområde std;
klasse Base_Class

offentlig:
virtuelt tomt display ()

cout << "I am in Base class" << endl;

;
klasse Derived_Class: offentlig Base_Class

offentlig:
ugyldig visning ()

cout << "I am in Derived class" retur 0;

Eksempel 3

Dette er et annet eksempel på en virtuell funksjon. Som du kan se i programmet nedenfor, har vi definert en basisklasse, i.e., Dyr. Det er to avledede klasser: Hund og ku. Vi har definert eat () -funksjonen som virtuell i basisklassen, i.e., Dyr. Vi har da omdefinert eat () -funksjonen i både de avledede klassene, hund og ku.  I hovedfunksjonen () har vi en peker av baseklassen, i.e., Animal, og festet deretter den avledede klassen, Dog. Så når vi kaller eat () -funksjonen ved hjelp av baseklasspekeren, kan vi påkalle den avledede klasseversjonen av eat () -funksjonen, i.e., eat () -funksjonen fra hundeklassen. Tilsvarende, når vi fester Cow-klasseobjektet, kan vi påberope oss den avledede klasseversjonen av eat () -funksjonen, dvs.e., eat () -funksjonen fra Cow-klassen. Du kan tydelig se denne oppførselen i utdataene nedenfor. 

#inkludere
bruker navneområde std;
klasse Dyr

offentlig:
virtuelt tomrom spise ()

cout << "Animal - base class - undefined eating behavior." << endl;

;
klasse Hund: offentlig dyr

offentlig:
ugyldig spise ()

cout << "Dog - eat non-veg!" << endl;

;
klasse Ku: offentlig dyr

offentlig:
ugyldig spise ()

cout << "Cow - eat veg!" a_ptr = ny ku ();
a_ptr-> spis ();
retur 0;

Konklusjon

I denne artikkelen har jeg forklart begrepet virtuell funksjon i C++. C ++ støtter forskjellige typer polymorfisme - statisk polymorfisme og dynamisk polymorfisme. Ved hjelp av en virtuell funksjon kan vi oppnå kjøretid / dynamisk polymorfisme. I denne artikkelen har vi bare sett på begrepet virtuell funksjon og hvordan man kan oppnå polymorfisme i løpetid. Jeg har forklart tre arbeidseksempler for å forklare virtuell funksjon.

HD Remastered Games for Linux som aldri hadde en Linux-utgave tidligere
Mange spillutviklere og utgivere kommer med HD-remaster av gamle spill for å forlenge franchisetiden, vennligst fans som ber om kompatibilitet med mod...
Hvordan bruke AutoKey til å automatisere Linux-spill
AutoKey er et desktopautomatiseringsverktøy for Linux og X11, programmert i Python 3, GTK og Qt. Ved å bruke skript og MACRO-funksjonalitet kan du aut...
Hvordan vise FPS-teller i Linux-spill
Linux-spill fikk et stort press da Valve kunngjorde Linux-støtte for Steam-klient og spillene deres i 2012. Siden den gang har mange AAA- og indiespil...