Preglasitev funkcije C ++

C Function Overriding



V tem članku bomo obravnavali preglasitev funkcij v programskem jeziku C ++. C ++ podpira polimorfizem med izvajanjem.

Pri preglasitvi funkcije podrejeni razred na novo definira funkcijo, ki je že definirana v svojem nadrejenem razredu.







Programerju omogoča, da zagotovi izpeljano funkcionalnost, specifično za razred (čeprav je definirana v osnovnem razredu).



Zdaj bomo videli nekaj primerov in razumeli koncept preglasitve funkcije v C ++.



Primer-1

V spodnji vzorčni kodi sem definiral dva razreda - osnovni razred in izpeljani razred. Osnovni razred ima funkcijo člana, to je disp (). Izpeljani_Class je podedovan od Base_Class. Funkcija disp () je prisotna v Base_Class in nato redefinirana v Derived_Class.





V funkciji main () se ustvari objekt Derived_Class, to je d. Nato pokličemo funkcijo disp () na izpeljanem objektu razreda, zato bo priklicana funkcija v izvedenem razredu. Različica osnovnega razreda tukaj ni upoštevana. Spodaj si lahko ogledate izhod kot - disp () v izvedenem razredu.

#vključi

z uporabo imenskega prostora std;

// osnovni razred
razred Base_Class
{
javno:
ničnoizkoristiti()
{
stroški<< 'disp () funkcija v osnovnem razredu.' <<endl;
}

};

// izpeljani razred
razred Derived_Class:javni Base_Class
{
javno:
ničnoizkoristiti()
{
stroški<< 'funkcija disp () v izpeljanem razredu' <<endl;
}
};

intglavni()
{
Izpeljani_razred d;
d.izkoristiti(); // funkcija disp () na izpeljanem objektu razreda
vrnitev 0;
}



Primer-2

V tem primeru bomo videli, kako namerno poklicati različico funkcije osnovnega razreda skozi predmet izpeljanega razreda. V definiciji izpeljane funkcije razreda uporabljamo operater ločljivosti obsega [::] za klicanje različice funkcije osnovnega razreda.

#vključi

z uporabo imenskega prostora std;

razred Base_Class
{
javno:
ničnoizkoristiti()
{
stroški<< 'disp () funkcija v osnovnem razredu.' <<endl;
}

};

razred Derived_Class:javni Base_Class
{
javno:
ničnoizkoristiti()
{
Base_Class::izkoristiti(); // Pokliči različico osnovnega razreda disp ()
}
};

intglavni()
{
Izpeljani_razred d;
d.izkoristiti();
vrnitev 0;
}

Primer-3

To je še en primer preglasitve funkcije. V tem primeru smo ustvarili starševski razred - Animal in dva izpeljana razreda - Duck in Dog. Osnovni razred, tj. Razred Animal, ima funkcijo člana sound ().

V izpeljanem razredu/podrejenem razredu, to je Dog, smo na novo definirali isto funkcijo, to je zvok (), da preglasimo njeno definicijo osnovnega razreda. Podobno smo v drugem izpeljanem razredu, torej Ducku, redefinirali isto funkcijo, to je zvok ().

V funkciji main () smo ustvarili pasji predmet Dog and duck of Duck. Torej, ko pokličemo funkcijo sound () za psa in raco, se bo klicala izvedena različica funkcije sound (). Rezultate programa si lahko ogledate, kot je prikazano spodaj. Tako lahko s pomočjo preglasitve funkcije prikličemo izpeljano funkcijo, specifično za razred.

#vključi

z uporabo imenskega prostora std;

razred Žival
{
javno:
ničnozvok()
{
stroški<< 'Zvok živali!' <<endl;
}

};

// Izpeljani razred - razred psa
razred pes:javna žival
{
javno:
ničnozvok()
{
stroški<< 'Pasji zvok - lajež.' <<endl;
}
};

// Izpeljani razred - razred Raca
razred Raca:javna žival
{
javno:
ničnozvok()
{
stroški<< 'Račji ​​zvok - kvočka.' <<endl;
}
};


intglavni()
{
Pasji pes;
Raca raca;

pes.zvok(); // zvok () psa
raca.zvok(); // zvok () race

vrnitev 0;
}

Zaključek

V tem članku sem razložil preglasitev funkcije C ++ . Jezik C ++ podpira polimorfizem izvajalnega okolja. Preglasitev funkcij pomaga doseči polimorfizem časa izvajanja v C ++. Ta članek je obravnaval koncept preglasitve funkcije in kako doseči polimorfizem med izvajanjem s preglasitvijo funkcij.