C ++

C ++ virtuell funktion

C ++ virtuell funktion
I den här artikeln ska vi diskutera den virtuella funktionen i C ++ programmeringsspråk. En virtuell funktion används i C ++ för att uppnå runtime / dynamisk polymorfism. Vi kommer att se flera exempel för att förstå konceptet för den virtuella funktionen i C++.

En virtuell funktion är en medlemsfunktion som definieras i basklassen / föräldraklassen och omdefinieras i den härledda klassen. Virtuell funktion gör det möjligt att anropa den härledda klassversionen av funktionen med referens eller pekare till basklassen.

Låt oss se några exempel för att förstå begreppet virtuell funktion.

I det första exemplet kommer vi att se beteendet hos den icke-virtuella funktionen, och sedan i det andra exemplet kommer vi att förklara beteendet hos en virtuell funktion.

Exempel 1

I följande exempelkod har vi två klasser: basklass och härledd klass.

Basklassen har en medlemsfunktion, dvs.e., visa(). Den härledda klassen ärvs från basklassen och omdefinierade funktionen display ().

Sedan har vi förklarat en pekare till basklassens typ och tilldelat ett objekt från den härledda klassen. Så när vi kallar display () -funktionen med basklasspekaren kommer basklassfunktionen att kallas. Du kan se utdata nedan.

Men i sådana fall ger C ++ ett sätt att anropa den härledda klassfunktionen genom att förklara basklassfunktionen som virtuell. Vi kommer att se ett annat exempel för att förstå detta.

#omfatta
använder namnrymd std;
klass Base_Class

offentlig:
ogiltig visning ()

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

;
klass Derived_Class: public Base_Class

offentlig:
ogiltig visning ()

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

Exempel 2

I det här exemplet har vi definierat display () -funktionen som en virtuell funktion i basklassen. Den enda skillnaden från det föregående programmet är att vi har lagt till ett virtuellt nyckelord framför "void display ()" i basklassen.

Nu, om du ser utdata, skrivs det ut, "Jag är i härledd klass", vilket indikerar att den härledda klassfunktionen kallas.

Det virtuella nyckelordet (virtuell funktion) i basklassen ansvarar för att säkerställa att rätt funktion anropas för ett objekt.

#omfatta
använder namnrymd std;
klass Base_Class

offentlig:
virtuell tomrumsvisning ()

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

;
klass Derived_Class: public Base_Class

offentlig:
ogiltig visning ()

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

Exempel 3

Detta är ett annat exempel på en virtuell funktion. Som du kan se i programmet nedan har vi definierat en basklass, dvs.e., Djur. Det finns två härledda klasser: Hund och ko. Vi har definierat funktionen eat () som virtuell i basklassen, dvs.e., Djur. Vi har sedan omdefinierat eat () -funktionen i både de härledda klasserna Hund och Ko.  I huvudfunktionen () har vi en pekare av basklassen, dvs.e., Animal, och bifogade sedan den härledda klassen, Dog. Så när vi kallar funktionen eat () med basklasspekaren kan vi åberopa den härledda klassversionen av eat () -funktionen, i.e., funktionen eat () från hundklassen. På samma sätt, när vi fäster objektet Cow-klass kan vi sedan åberopa den härledda klassversionen av funktionen eat (), dvs.e., funktionen eat () från Cow-klassen. Du ser tydligt detta beteende i utdata nedan. 

#omfatta
använder namnrymd std;
klass Djur

offentlig:
virtuellt tomrum äta ()

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

;
klass Hund: offentligt djur

offentlig:
ogiltig äta ()

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

;
klass Ko: offentligt djur

offentlig:
ogiltig äta ()

cout << "Cow - eat veg!" a_ptr = ny ko ();
a_ptr-> äta ();
returnera 0;

Slutsats

I den här artikeln har jag förklarat begreppet virtuell funktion i C++. C ++ stöder olika typer av polymorfism - statisk polymorfism och dynamisk polymorfism. Med hjälp av en virtuell funktion kan vi uppnå runtime / dynamisk polymorfism. I den här artikeln har vi bara tittat på begreppet virtuell funktion och hur man kan uppnå polymorfism under körning. Jag har förklarat tre arbetsexempel för att förklara virtuell funktion.

Mus Så här vänder du mus- och styrplattans rullningsriktning i Windows 10
Så här vänder du mus- och styrplattans rullningsriktning i Windows 10
Mus och Pekplattas gör inte bara datoranvändning lättare men effektivare och mindre tidskrävande. Vi kan inte föreställa oss ett liv utan dessa enhete...
Mus Så här ändrar du muspekare och markörstorlek, färg och schema på Windows 10
Så här ändrar du muspekare och markörstorlek, färg och schema på Windows 10
Muspekaren och markören i Windows 10 är mycket viktiga aspekter av operativsystemet. Detta kan också sägas för andra operativsystem, så i sanning är d...
Gratis och öppen källkodsmotorer för utveckling av Linux-spel
Den här artikeln kommer att täcka en lista över gratis motorer med öppen källkod som kan användas för att utveckla 2D- och 3D-spel på Linux. Det finns...