Navidezna funkcija je funkcija člana, ki je definirana v osnovnem razredu / nadrejenem razredu in ponovno definirana v izpeljanem razredu. Navidezna funkcija omogoča klicanje izvedene različice razreda funkcije z uporabo sklica ali kazalca na osnovni razred.
Oglejmo si nekaj primerov za razumevanje koncepta navidezne funkcije.
V prvem primeru bomo videli vedenje navidezne funkcije, nato pa v drugem primeru razložili obnašanje navidezne funkcije.
Primer 1
V naslednjem primeru kode imamo dva razreda: osnovni razred in izvedeni razred.
Osnovni razred ima funkcijo člana, tj.e., zaslon (). Izpeljani razred je podedovan od osnovnega razreda in je na novo definiral funkcijo display ().
Nato smo razglasili kazalec na tip osnovnega razreda in dodelili objekt izpeljanega razreda. Ko torej pokličemo funkcijo display () z uporabo kazalca tipa osnovnega razreda, bo poklicana funkcija osnovnega razreda. Rezultate si lahko ogledate spodaj.
Toda v takih primerih C ++ ponuja način za klic izvedene funkcije razreda z razglasitvijo funkcije osnovnega razreda kot navidezne. Videli bomo še en primer za razumevanje tega.
#includeuporaba imenskega prostora std;
razred Base_Class
javno:
prikaz praznine ()
cout << "I am in Base class" << endl;
;
razred Derived_Class: javni Base_Class
javno:
prikaz praznine ()
cout << "I am in Derived class"
2. primer
V tem primeru smo funkcijo display () definirali kot navidezno funkcijo v osnovnem razredu. Edina razlika od prejšnjega programa je ta, da smo v osnovni razred dodali virtualno ključno besedo pred “void display ()”.
Če vidite izhod, se natisne "Sem v izpeljanem razredu", kar pomeni, da je funkcija izpeljanega razreda poklicana.
Navidezna ključna beseda (navidezna funkcija) v osnovnem razredu je odgovorna za zagotovitev, da je za objekt poklicana prava funkcija.
#includeuporaba imenskega prostora std;
razred Base_Class
javno:
prikaz navidezne praznine ()
cout << "I am in Base class" << endl;
;
razred Derived_Class: javni Base_Class
javno:
prikaz praznine ()
cout << "I am in Derived class"
3. primer
To je še en primer navidezne funkcije. Kot lahko vidite v spodnjem programu, smo opredelili osnovni razred, tj.e., Žival. Obstajata dva izpeljana razreda: pes in krava. Funkcijo eat () smo v osnovnem razredu opredelili kot navidezno, tj.e., Žival. Nato smo na novo opredelili funkcijo eat () v obeh izpeljanih razredih, Dog in Cow. V funkciji main () imamo kazalec osnovnega razreda, tj.e., Žival in nato priložili izpeljani razred, pes. Torej, ko pokličemo funkcijo eat () z uporabo kazalca osnovnega razreda, lahko prikličemo izvedeno različico funkcije eat (), i.e., funkcijo eat () iz razreda Dog. Podobno lahko, ko priključimo objekt razreda Cow, nato prikličemo izvedeno različico razreda funkcije eat (), i.e., funkcijo eat () iz razreda Cow. To vedenje lahko jasno vidite v spodnjem izhodu.
#includeuporaba imenskega prostora std;
razred Žival
javno:
virtualna praznina jesti ()
cout << "Animal - base class - undefined eating behavior." << endl;
;
razred Pes: javna Žival
javno:
void eat ()
cout << "Dog - eat non-veg!" << endl;
;
razred Krava: javna žival
javno:
void eat ()
cout << "Cow - eat veg!"
a_ptr-> eat ();
vrnitev 0;
Zaključek
V tem članku sem razložil koncept navidezne funkcije v jeziku C++. C ++ podpira različne vrste polimorfizma - statični polimorfizem in dinamični polimorfizem. S pomočjo navidezne funkcije lahko dosežemo polimorfizem med izvajanjem in dinamiko. V tem članku smo obravnavali samo koncept navidezne funkcije in kako doseči polimorfizem med izvajanjem. Za razlago navidezne funkcije sem razložil tri delovne primere.