Ako implementovať preťaženie a prepísanie funkcií v C ++?



Tento článok vás oboznámi s funkciou Overloading And Overriding In C ++, čo sú dva veľmi dôležité koncepty OOPS.

C ++ je v prírode a môže sa pochváliť rôznymi funkciami. V tejto relácii by sme diskutovali o tom, ako implementovať preťaženie funkcií a prepísanie funkcií v C ++.

Nasledujúcim ukazovateľom sa budeme venovať v tomto článku,





fibonacciho rekurzívny c ++

Ďalej v tomto článku o preťažení a prepísaní funkcií v C ++

Funkčné preťaženie



Funkcie, ktoré majú rovnaký názov, ale odlišné parametre, sú v jazyku C ++ povolené a volajú sa Funkčné preťaženie . Tiež sa nazýva polymorfizmus v kompilácii.

Napríklad:

suma (int a, float b) suma (int a, int b) suma (int a, int b, int c)

Tu existujú tri funkcie s rovnakým názvom, ale odlišuje ich len to, že parametre sú u každej odlišné. Takže v závislosti od odovzdaných parametrov sa volá funkcia.



Ak sa návratové typy funkcií líšia, považuje sa to za neplatné.

Ďalej v tomto článku o preťažení a prepísaní funkcií v C ++

Vzorový kód pre načítanie funkcie

zahrnúť pomocou menného priestoru štandardná trieda Dodatok {public: int add (int n1, int n2) {return n1 + n2} int add (int n1, int n2, int n3) {return n1 + n2}} int main (void) {Addition cout< 

Výkon

Výstup - preťaženie a prepísanie funkcie v jazyku C ++ - Edureka

Vysvetlenie

Vo vyššie uvedenom programe máme v triede sčítania dve funkcie. Obaja menovaní pridávajú. Jeden má 2 parametre a druhý má 3 parametre.

V hlavnej funkcii vytvoríme objekt pridania triedy s názvom a. Voláme prídavné funkcie s parametrami 2 a 3 a funkcie add sa volajú a vykonávajú sčítanie.

Takto prebieha preťaženie funkcie.

Ďalej v tomto článku o preťažení a prepísaní funkcií v C ++

Prepísanie funkcie

Keď má odvodená trieda funkciu s rovnakým názvom ako funkcia základnej triedy, volá sa Prepísanie funkcie. Obe funkcie musia mať v oboch triedach rovnaké parametre.

Vzorový kód na prepísanie funkcií

#include using namespace std class BaseClass {public: void disp () {cout<<'Parent Class Function' } } class DerivedClass: public BaseClass{ public: void disp() { cout<<'Child Class Function' } } int main() { DerivedClass obj = DerivedClass() obj.disp() return 0 } 

Výkon:

Vysvetlenie:

Vo vyššie uvedenom programe ukážeme základnú funkciu s rovnakým názvom v odvodenej a základnej triede. Tu je objekt vytvorený z odvodenej triedy, takže keď voláme display, zobrazí sa iba podradený objekt triedy.

Ďalej v tomto článku o preťažení a prepísaní funkcií v C ++

Príkaz na vykonanie prepísania

Zvážte kód:

#include using namespace std class BaseClass {public: void disp () {cout<<'Function of Parent Class' } } class DerivedClass: public BaseClass{ public: void disp() { cout<<'Function of Child Class' } } int main() { BaseClass obj = DerivedClass() obj.disp() return 0 } 

Výkon:

Vysvetlenie:

Vo vyššie uvedenom programe ukážeme základnú funkciu s rovnakým názvom v odvodenej a základnej triede. Jediný rozdiel oproti predchádzajúcemu programu je v tom. Vytvárame objekt podradenej triedy. Objektu podradenej triedy je pridelený odkaz na základnú triedu. Môžete to urobiť aj pomocou inej metódy,

Syntax

Parent_class_name :: function ()

Vo vyššie uvedenom príklade ho používame ako,

BaseClass :: disp ()

Toto je ďalší spôsob prekonania.

Preťaženie funkcie Prepísanie funkcie VS.

Funkčné preťaženie Prepísanie funkcie
Rozsah je rovnakýRozsah je iný
Podpisy sa musia líšiť (napr. Parameter)Podpisy musia byť rovnaké
Počet možných funkcií preťaženiaJe možná iba jedna prvoradá funkcia
Môže sa vyskytnúť bez dedičstvaVyskytuje sa hlavne z dôvodu dedičstva

Dostali sme sa tak na koniec tohto článku o „Preťažení funkcií a prepísaní v C ++“. Ak sa chcete dozvedieť viac, pozrite si Edureka, dôveryhodná online vzdelávacia spoločnosť. Výcvikový a certifikačný kurz Edureka Java J2EE a SOA je navrhnutý tak, aby vás vyškolil pre základné aj pokročilé koncepty Java spolu s rôznymi rámcami Java, ako je Hibernate & Spring.

choď na funkciu c ++

Máte na nás otázku? Uveďte to prosím v sekcii komentárov tohto blogu a my sa vám ozveme čo najskôr.