C ++

C ++ - virtuaalitoiminto

C ++ - virtuaalitoiminto
Tässä artikkelissa aiomme keskustella virtuaalitoiminnosta C ++ - ohjelmointikielellä. Virtuaalista toimintoa käytetään C ++: ssa ajonaikaisen / dynaamisen polymorfismin saavuttamiseksi. Näemme useita esimerkkejä ymmärtääksesi virtuaalitoiminnon käsitteen C: ssä++.

Virtuaalifunktio on jäsenfunktio, joka on määritelty perusluokassa / pääluokassa ja määritelty uudelleen johdetussa luokassa. Virtuaalitoiminto sallii funktion johdetun luokan version kutsumisen käyttäen viittausta tai osoitinta perusluokkaan.

Katsotaanpa muutama esimerkki virtuaalitoiminnon käsitteen ymmärtämiseksi.

Ensimmäisessä esimerkissä näemme ei-virtuaalisen funktion käyttäytymisen ja sitten toisessa esimerkissä selitämme virtuaalisen funktion käyttäytymisen.

Esimerkki 1

Seuraavassa esimerkkikoodissa meillä on kaksi luokkaa: perusluokka ja johdettu luokka.

Perusluokalla on jäsenfunktio, so.e., näyttö(). Johdettu luokka peritään perusluokasta ja määrittelee uudelleen display () -funktion.

Sitten olemme ilmoittaneet osoittimen perusluokan tyypille ja osoittaneet johdetun luokan objektin. Joten, kun kutsumme näyttö () -funktion perusluokan tyypin osoittimen avulla, kutsutaan perusluokkatoiminto. Näet tuotoksen alla.

Mutta tällaisissa tapauksissa C ++ tarjoaa tavan kutsua johdettu luokkafunktio julistamalla perusluokkatoiminto virtuaaliseksi. Näemme toisen esimerkin tämän ymmärtämiseksi.

#sisältää
käyttämällä nimitilaa vakio;
luokka Base_Class

julkinen:
mitätön näyttö ()

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

;
luokka Johdettu_luokka: julkinen pohja-luokka

julkinen:
mitätön näyttö ()

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

Esimerkki 2

Tässä esimerkissä olemme määrittäneet display () -funktion virtuaaliseksi funktioksi perusluokassa. Ainoa ero edelliseen ohjelmaan on, että olemme lisänneet virtuaalisen avainsanan "void display ()" -kentän eteen perusluokkaan.

Jos näet lähdön, se tulostaa: "Olen johdetussa luokassa", mikä osoittaa, että johdettua luokan funktiota kutsutaan.

Perusluokan virtuaalinen avainsana (virtuaalifunktio) on vastuussa siitä, että objektille vaaditaan oikea toiminto.

#sisältää
käyttämällä nimitilaa vakio;
luokka Base_Class

julkinen:
virtuaalinen mitätön näyttö ()

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

;
luokka Johdettu_luokka: julkinen pohja-luokka

julkinen:
mitätön näyttö ()

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

Esimerkki 3

Tämä on toinen esimerkki virtuaalisesta toiminnosta. Kuten alla olevasta ohjelmasta näet, olemme määrittäneet perusluokan, ts.e., Eläin. Johdettuja luokkia on kaksi: Koira ja Lehmä. Olemme määrittäneet eat () -funktion virtuaaliseksi perusluokassa, ts.e., Eläin. Olemme sitten määrittäneet syö () -funktion uudelleen sekä johdetuissa luokissa, koirassa että lehmässä.  Main () -funktiossa meillä on perusluokan osoitin, ts.e., Eläin, ja kiinnitti sitten johdetun luokan Koira. Joten, kun kutsumme eat () -funktion perusluokan osoittimen avulla, voimme kutsua syödä () -funktion johdetun luokan version,.e., syö () -toiminto Koiraluokasta. Vastaavasti, kun liitämme lehmäluokkaobjektin, voimme sitten vedota johdetun luokkaversion eat () -funktiosta,.e., syö () -toiminto lehmäluokasta. Voit selvästi nähdä tämän käyttäytymisen alla olevasta lähdöstä. 

#sisältää
käyttämällä nimitilaa vakio;
luokan eläin

julkinen:
virtuaalinen tyhjä syödä ()

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

;
luokan koira: julkinen eläin

julkinen:
mitätön syödä ()

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

;
luokka Lehmä: julkinen eläin

julkinen:
mitätön syödä ()

cout << "Cow - eat veg!" a_ptr = uusi lehmä ();
a_ptr-> syödä ();
paluu 0;

Johtopäätös

Tässä artikkelissa olen selittänyt virtuaalitoiminnon käsitteen C: ssä++. C ++ tukee erityyppisiä polymorfismeja - staattista ja dynaamista polymorfismia. Virtuaalitoiminnon avulla voimme saavuttaa ajonaikaisen / dynaamisen polymorfismin. Tässä artikkelissa olemme tarkastelleet vain virtuaalitoiminnon käsitettä ja miten ajonaikaisen polymorfismin aikaansaaminen. Olen selittänyt kolme toimivaa esimerkkiä virtuaalitoiminnon selittämiseksi.

Top 10 Games to Play on Ubuntu
Windows platform has been one of the dominating platforms for gaming because of the huge percentage of games that are developing today to natively sup...
5 parasta arcade-peliä Linuxille
Nykyään tietokoneet ovat vakavia koneita, joita käytetään pelaamiseen. Jos et pääse uusiin korkeisiin pisteisiin, tiedät mitä tarkoitan. Tässä viestis...
Battle For Wesnoth 1.13.6 Development Released
Battle For Wesnoth 1.13.6 released last month, is the sixth development release in the 1.13.x series and it delivers a number of improvements, most no...