C ++ Funksjon overstyrer

C ++ Funksjon overstyrer
I denne artikkelen vil vi dekke funksjon som er overordnet på programmeringsspråket C ++. C ++ støtter runtime polymorfisme. I Function Overriding omdefinerer barneklassen funksjonen som allerede er definert i foreldreklassen. Det gjør det mulig for programmereren å gi avledet klassespesifikk funksjonalitet (selv om den er definert i baseklassen). Nå vil vi se noen få eksempler og forstå funksjonens overordnede konsept i C++.

Eksempel 1

Jeg har definert to klasser i eksemplet nedenfor - en baseklasse og en avledet klasse. Baseklassen har en medlemsfunksjon, jeg.e., disp (). "DEDED_CLASS" er arvet fra “Base_class.”“ Disp () ”-funksjonen er til stede i“ Base_class ”og omdefinert deretter i“ DEDED_CLASS.”

I hovedfunksjonen (), et objekt av DED_CLASS, I.e., “D,” er opprettet. Deretter kaller vi DISP () -funksjonen på det avledede klasseobjektet, slik at funksjonen i den avledede klassen blir påkalt. Baseklasseversjonen blir ignorert her. Du kan se under utdataene som - “Disp () -funksjonen i den avledede klassen.”

#inkludere
ved hjelp av navneområdet STD;
// baseklasse
Klasse Base_Class

offentlig:
void disp ()

cout << "disp() function in base class." << endl;

;
// avledet klasse
Klasseded_class: public base_class

offentlig:
void disp ()

cout << "disp() function in derived class" << endl;

;
int main ()

DEDED_CLASS D;
d.disp (); // disp () -funksjon på avledet klasseobjekt
retur 0;

Eksempel-2

I dette eksemplet vil vi se hvordan vi bevisst kan kalle baseklasseversjonen av funksjonen gjennom det avledede klasseobjektet. I definisjonen av avledet klassefunksjon bruker vi omfangsoppløsningsoperatøren [::] for å kalle baseklasseversjonen av funksjonen.

#inkludere
ved hjelp av navneområdet STD;
Klasse Base_Class

offentlig:
void disp ()

cout << "disp() function in base class." << endl;

;
Klasseded_class: public base_class

offentlig:
void disp ()

Base_class :: disp (); // Ring Base Class -versjonen av DISP ()

;
int main ()

DEDED_CLASS D;
d.disp ();
retur 0;

Eksempel-3

Dette er et annet eksempel på funksjonsoverstyring. I dette eksemplet har vi laget en foreldreklasse - dyr og to avledede klasser - and og hund. Baseklassen, jeg.e., dyreklassen, har en medlemsfunksjonslyd ().

I den avledede klassen/barneklassen, jeg.e., Hund, vi har omdefinert den samme funksjonen, jeg.e., lyd (), for å overstyre definisjonen av baseklassen. Tilsvarende, i den andre avledede klassen, jeg.e., And, vi har omdefinert den samme funksjonen, jeg.e., lyd().

I hovedfunksjonen () har vi laget "hunden" -objektet med "hund" og "and" av "and.”Så nå når vi kaller lyd () -funksjonen for hund og and, vil den avledede klasseversjonen av lyden () -funksjonen ringe. Du kan se utdataene fra programmet som vist nedenfor. Så ved hjelp av funksjonen som er overordnet, kan vi påkalle den avledede klassespesifikke funksjonen.

#inkludere
ved hjelp av navneområdet STD;
Klassedyr

offentlig:
ugyldig lyd ()

cout << "Animal sound!" << endl;

;
// avledet klasse - hundeklasse
Klassehund: offentlig dyr

offentlig:
ugyldig lyd ()

cout << "Dog sound - bark." << endl;

;
// avledet klasse - andeklasse
Klasseand: offentlig dyr

offentlig:
ugyldig lyd ()

cout << "Duck sound - quack." << endl;

;
int main ()

Hundehund;
Duck Duck;
hund.lyd(); // lyd () av ​​hund
and.lyd(); // lyd () av ​​and
retur 0;

Konklusjon

I denne artikkelen har jeg forklart funksjon som er overordnet i C++. C ++ -språket støtter runtime -polymorfisme. Funksjonsoverstyring hjelper til med å oppnå kjøretidspolymorfisme i C++. Denne artikkelen så på begrepet funksjonsoverskridende og hvordan du oppnår runtime -polymorfisme ved bruk av funksjonsoverskridende.