C ++ funkció felülbírálása

C Function Overriding



Ebben a cikkben a C ++ programozási nyelvű funkciók felülírásával foglalkozunk. A C ++ támogatja a futásidejű polimorfizmust.

A függvény felülbírálásakor a gyermekosztály újradefiniálja a szülőosztályában már definiált függvényt.







Lehetővé teszi a programozó számára, hogy származtatott osztály-specifikus funkciókat biztosítson (annak ellenére, hogy az alaposztályban van meghatározva).



Most látni fogunk néhány példát, és megértjük a funkció felülírásának koncepcióját a C ++ nyelven.



1. példa

Az alábbi példakódban két osztályt definiáltam - egy alaposztályt és egy származtatott osztályt. Az alaposztálynak tagfüggvénye van, azaz disp (). A Derived_Class öröklődik a Base_Class -tól. A disp () függvény jelen van a Base_Class -ban, majd újradefiniálva a Derived_Class -ban.





A fő () függvényben a Derived_Class objektum, azaz d jön létre. Ezután a származtatott osztályobjektumon meghívjuk a disp () függvényt, így a származtatott osztály függvényét hívjuk meg. Az alaposztályú verzió itt figyelmen kívül marad. Az alábbiakban láthatja a kimeneti as - disp () függvényt a származtatott osztályban.

#befoglalni

névtér standard használatával;

// alaposztály
osztály Base_Class
{
nyilvános:
üresigénybe()
{
költség<< 'disp () függvény az alaposztályban.' <<endl;
}

};

// származtatott osztály
osztály Derived_Class:public Base_Class
{
nyilvános:
üresigénybe()
{
költség<< 'disp () függvény a származtatott osztályban' <<endl;
}
};

intfő-()
{
Derived_Class d;
d.igénybe(); // disp () függvény a származtatott osztályobjektumon
Visszatérés 0;
}



2. példa

Ebben a példában látni fogjuk, hogyan lehet szándékosan meghívni a függvény alaposztályú verzióját a származtatott osztályobjektumon keresztül. A származtatott osztályfüggvény definícióban a [::] hatókörű felbontási operátort használjuk a függvény alaposztályú verziójának meghívására.

#befoglalni

névtér standard használatával;

osztály Base_Class
{
nyilvános:
üresigénybe()
{
költség<< 'disp () függvény az alaposztályban.' <<endl;
}

};

osztály Derived_Class:public Base_Class
{
nyilvános:
üresigénybe()
{
Base_Class::igénybe(); // Hívja meg a disp () alaposztályú verzióját
}
};

intfő-()
{
Derived_Class d;
d.igénybe();
Visszatérés 0;
}

3. példa

Ez egy másik példa a funkció felülbírálására. Ebben a példában létrehoztunk egy szülőosztályt - Állat és két származtatott osztályt - Kacsa és Kutya. Az alaposztály, azaz az Animal osztály tagfüggvény hanggal rendelkezik ().

A származtatott osztály/gyermek osztályban, azaz Kutya, ugyanazt a függvényt, azaz a hangot () újradefiniáltuk, hogy felülírjuk az alaposztály definícióját. Hasonlóképpen, a másik származtatott osztályban, azaz a Kacsában is ugyanazt a függvényt definiáltuk újra, azaz a hangot ().

A fő () függvényben létrehoztuk a Dog and Duck of Duck kutyaobjektumot. Tehát most, amikor a hang () függvényt kutyának és kacsának hívjuk, a hang () függvény származtatott osztályváltozata hívja. A program kimenetét az alábbiak szerint láthatja. Tehát a függvény felülbírálása segítségével meghívhatjuk a származtatott osztály-specifikus függvényt.

#befoglalni

névtér standard használatával;

osztályú állat
{
nyilvános:
üreshang()
{
költség<< - Állati hang! <<endl;
}

};

// Származtatott osztály - Kutya osztály
osztályú Kutya:nyilvános állat
{
nyilvános:
üreshang()
{
költség<< - Kutyahang - ugat. <<endl;
}
};

// Származtatott osztály - Kacsa osztály
osztályú Kacsa:nyilvános állat
{
nyilvános:
üreshang()
{
költség<< - Kacsahang - csicska. <<endl;
}
};


intfő-()
{
Kutya kutya;
Kacsakacsa;

kutya.hang(); // hang () a kutya
kacsa.hang(); // sound () of kacsa

Visszatérés 0;
}

Következtetés

Ebben a cikkben elmagyaráztam a funkció felülbírálását C ++ . A C ++ nyelv támogatja a futásidejű polimorfizmust. A funkció felülbírálása segít elérni a futási idő polimorfizmusát C ++ nyelven. Ez a cikk megvizsgálta a függvények felülbírálásának fogalmát és azt, hogyan lehet elérni a futásidejű polimorfizmust a függvény felülbírálásával.