Nadjačavanje funkcije C ++

C Function Overriding



U ovom ćemo članku obraditi nadjačavanje funkcija u programskom jeziku C ++. C ++ podržava polimorfizam tijekom izvođenja.

U nadjačavanju funkcije, podređena klasa redefinira funkciju koja je već definirana u svojoj roditeljskoj klasi.







Omogućuje programeru pružanje izvedene funkcionalnosti specifične za klasu (iako je definirana u osnovnoj klasi).



Sada ćemo vidjeti nekoliko primjera i razumjeti koncept nadjačavanja funkcija u C ++.



Primjer-1

U donjem primjeru koda definirao sam dvije klase - osnovnu klasu i izvedenu klasu. Osnovna klasa ima funkciju člana, tj. Disp (). Derived_Class je naslijeđen od Base_Class. Funkcija disp () prisutna je u Base_Class, a zatim je redefinirana u Derived_Class.





U funkciji main () stvara se objekt Derived_Class, tj. D. Zatim pozivamo funkciju disp () na objektu izvedene klase, pa će se pozvati funkcija u izvedenoj klasi. Ovdje se zanemaruje verzija osnovne klase. Ispod možete vidjeti izlaz kao - disp () funkciju u izvedenoj klasi.

#uključi

koristeći imenski prostor std;

// osnovna klasa
klasa Base_Class
{
javnost:
poništitidobitak()
{
trošak<< 'disp () funkcija u osnovnoj klasi.' <<endl;
}

};

// izvedena klasa
klasa Izvedena_klasa:javna Baza_Klasa
{
javnost:
poništitidobitak()
{
trošak<< 'disp () funkcija u izvedenoj klasi' <<endl;
}
};

intglavni()
{
Izvedena_razred d;
d.dobitak(); // disp () funkcija na izvedenom objektu klase
povratak 0;
}



Primjer-2

U ovom primjeru vidjet ćemo kako namjerno pozvati verziju funkcije osnovne klase kroz objekt izvedene klase. U izvedenoj definiciji funkcije klase koristimo operator razrješenja opsega [::] za pozivanje verzije funkcije osnovne klase.

#uključi

koristeći imenski prostor std;

klasa Base_Class
{
javnost:
poništitidobitak()
{
trošak<< 'disp () funkcija u osnovnoj klasi.' <<endl;
}

};

klasa Izvedena_klasa:javna Baza_Klasa
{
javnost:
poništitidobitak()
{
Base_Class::dobitak(); // Poziv verzije osnovne klase disp ()
}
};

intglavni()
{
Izvedena_razred d;
d.dobitak();
povratak 0;
}

Primjer-3

Ovo je još jedan primjer nadjačavanja funkcije. U ovom primjeru stvorili smo roditeljsku klasu - Animal i dvije izvedene klase - Duck and Dog. Osnovna klasa, tj. Klasa Animal, ima funkciju člana sound ().

U izvedenoj klasi klasa/dijete, tj. Dog, redefinirali smo istu funkciju, tj. Zvuk (), kako bismo nadjačali njenu definiciju osnovne klase. Slično, u drugoj izvedenoj klasi, tj. Patki, redefinirali smo istu funkciju, tj. Zvuk ().

U funkciji main () stvorili smo objekt psa psa i patke patke. Dakle, sada kada pozovemo funkciju sound () za psa i patku, pozvat će se izvedbena verzija funkcije sound (). Rezultate programa možete vidjeti kao što je prikazano u nastavku. Dakle, uz pomoć nadjačavanja funkcije možemo pozvati izvedenu funkciju specifičnu za klasu.

#uključi

koristeći imenski prostor std;

razred Životinja
{
javnost:
poništitizvuk()
{
trošak<< 'Životinjski zvuk!' <<endl;
}

};

// Izvedena klasa - Klasa pasa
razred Pas:javna Životinja
{
javnost:
poništitizvuk()
{
trošak<< 'Zvuk psa - lavež.' <<endl;
}
};

// Izvedena klasa - Klasa patka
klasa Patka:javna Životinja
{
javnost:
poništitizvuk()
{
trošak<< 'Zvuk patke - kvoca.' <<endl;
}
};


intglavni()
{
Pas pas;
Patka patka;

pas.zvuk(); // zvuk () psa
patka.zvuk(); // zvuk () patke

povratak 0;
}

Zaključak

U ovom članku objasnio sam premošćivanje funkcije C ++ . Jezik C ++ podržava polimorfizam za vrijeme izvođenja. Nadjačavanje funkcija pomaže u postizanju polimorfizma vremena izvođenja u C ++. Ovaj članak je razmotrio koncept nadjačavanja funkcija i kako postići polimorfizam tijekom izvođenja pomoću nadjačavanja funkcija.