C ++

C ++ virtuali funkcija

C ++ virtuali funkcija
Šiame straipsnyje aptarsime virtualiąją funkciją C ++ programavimo kalba. Virtuali funkcija naudojama C ++, norint pasiekti vykdymo laiką / dinaminį polimorfizmą. Pamatysime keletą pavyzdžių, kaip suprasti virtualiosios funkcijos sąvoką C++.

Virtuali funkcija yra nario funkcija, apibrėžta pagrindinėje klasėje / tėvų klasėje ir iš naujo apibrėžta išvestinėje klasėje. Virtuali funkcija leidžia iškviesti išvestinę funkcijos versijos versiją, naudojant nuorodą arba rodyklę į pagrindinę klasę.

Pažiūrėkime keletą pavyzdžių, kaip suprasti virtualios funkcijos sampratą.

Pirmajame pavyzdyje pamatysime ne virtualios funkcijos elgesį, o tada antrame pavyzdyje paaiškinsime virtualios funkcijos elgesį.

1 pavyzdys

Šiame kodo pavyzdyje mes turime dvi klases: pagrindinę klasę ir išvestinę klasę.

Bazinė klasė turi nario funkciją, t.e., rodyti (). Išvestinė klasė paveldima iš bazinės klasės ir iš naujo apibrėžė display () funkciją.

Tada mes paskelbėme žymeklį pagrindinės klasės tipui ir priskyrėme išvestinės klasės objektą. Taigi, kai iškviesime display () funkciją naudodami pagrindinės klasės tipo žymeklį, bus iškviesta pagrindinės klasės funkcija. Išvestį galite pamatyti žemiau.

Tačiau tokiais atvejais C ++ suteikia galimybę iškviesti išvestinę klasės funkciją, pagrindinės klasės funkciją paskelbiant virtualia. Pamatysime dar vieną pavyzdį, kaip tai suprasti.

# įtraukti
naudojant vardų sritį std;
klasės „Base_Class“

vieša:
negaliojantis ekranas ()

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

;
klasė Išvestinė_klasė: viešoji Bazės_klasė

vieša:
negaliojantis ekranas ()

cout << "I am in Derived class" grąžinti 0;

2 pavyzdys

Šiame pavyzdyje mes apibrėžėme funkciją display () kaip virtualią funkciją pagrindinėje klasėje. Vienintelis skirtumas nuo ankstesnės programos yra tai, kad bazinėje klasėje prieš „void display ()“ pridėjome virtualų raktinį žodį.

Dabar, jei matote išvestį, ji spausdina: „Aš esu išvestinėje klasėje“, o tai rodo, kad išvestinė klasės funkcija vadinama.

Virtualus raktinis žodis (virtuali funkcija) pagrindinėje klasėje yra atsakingas už tai, kad objektui būtų iškviesta teisinga funkcija.

# įtraukti
naudojant vardų sritį std;
klasės „Base_Class“

vieša:
virtualus tuštumos ekranas ()

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

;
klasė Išvestinė_klasė: viešoji bazė_klasė

vieša:
negaliojantis ekranas ()

cout << "I am in Derived class" grąžinti 0;

3 pavyzdys

Tai dar vienas virtualios funkcijos pavyzdys. Kaip matote žemiau pateiktoje programoje, mes apibrėžėme bazinę klasę, t.e., Gyvūnas. Yra dvi išvestinės klasės: Šuo ir Karvė. Funkciją „eat ()“ mes apibrėžėme kaip virtualią bazinėje klasėje, t.e., Gyvūnas. Tada mes iš naujo apibrėžėme valgyti () funkciją abiejose išvestinėse klasėse - Šuo ir Karvė.  Pagrindinėje () funkcijoje turime bazinės klasės žymeklį, t.e., Gyvūną, tada pridėjo išvestinę klasę „Šuo“. Taigi, kai mes paskambiname funkcija eat (), naudodami pagrindinės klasės žymeklį, galime pasinaudoti išvestine klasės eat () funkcijos versija, t.e., funkcija eat () iš šuns klasės. Panašiai, kai pridedame „Cow class“ objektą, tada galime pasinaudoti išvestine funkcijos eat () klasės versija, t.e., funkcija „eat ()“ iš „Cow“ klasės. Šią elgseną galite aiškiai pamatyti toliau pateiktoje išvestyje. 

# įtraukti
naudojant vardų sritį std;
klasės Gyvūnas

vieša:
virtuali tuštuma valgyti ()

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

;
klasės šuo: viešasis gyvūnas

vieša:
tuščia valgyti ()

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

;
klasė Karvė: viešasis gyvūnas

vieša:
tuščia valgyti ()

cout << "Cow - eat veg!" a_ptr = nauja Karvė ();
a_ptr-> valgyti ();
grąžinti 0;

Išvada

Šiame straipsnyje aš paaiškinau virtualios funkcijos sąvoką C++. C ++ palaiko įvairius polimorfizmo tipus - statinį polimorfizmą ir dinaminį polimorfizmą. Naudodamiesi virtualia funkcija galime pasiekti vykdymo laiką / dinaminį polimorfizmą. Šiame straipsnyje mes apžvelgėme tik virtualios funkcijos sampratą ir tai, kaip pasiekti vykdymo laiko polimorfizmą. Aš paaiškinau tris veikiančius pavyzdžius, kad paaiškinčiau virtualią funkciją.

Populiariausi „Oculus App Lab“ žaidimai
Jei esate „Oculus“ laisvų rankų įrangos savininkas, turite žinoti, kaip krauti iš šono. Šoninis įkėlimas yra ne parduotuvėje esančio turinio įdiegimas...
10 geriausių žaidimų, kuriuos reikia žaisti naudojant „Ubuntu“
„Windows“ platforma buvo viena iš dominuojančių žaidimų platformų dėl didžiulio procento žaidimų, kurie šiandien kuriami natūraliai palaikant „Windows...
5 geriausi „Arcade“ žaidimai, skirti „Linux“
Šiais laikais kompiuteriai yra rimta mašina, naudojama žaidimams. Jei negalėsite gauti naujo aukšto rezultato, žinosite, ką noriu pasakyti. Šiame įraš...