Jak implementovat přetížení a přepsání funkcí v C ++?



Tento článek vás seznámí s přetížením funkcí a přepsáním v C ++, což jsou dva z velmi důležitých konceptů OOPS.

C ++ je v přírodě a může se pochlubit různými funkcemi. V této relaci bychom diskutovali o tom, jak implementovat přetížení funkcí a přepsání funkcí v C ++.

Následující ukazatele budou popsány v tomto článku,





fibonacciho rekurze c ++

Pokračování v tomto článku o přetížení a přepsání funkcí v C ++

Přetížení funkce



Funkce mající stejný název, ale různé parametry jsou v C ++ povoleny a jsou volány Přetížení funkce . Nazývá se také Polymorfismus v době kompilace.

Například:

součet (int a, float b) součet (int a, int b) součet (int a, int b, int c)

Zde existují tři funkce se stejným názvem, ale odlišuje je pouze to, že parametry jsou u každé odlišné. V závislosti na předaných parametrech se tedy volá funkce.



Pokud se návratové typy funkcí liší, považuje se to za neplatné.

Pokračování v tomto článku o přetížení a přepsání funkcí v C ++

Ukázkový kód pro přetížení funkce

zahrnout pomocí jmenného prostoru std třída Dodatek {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ýstup

Přetížení a přepsání funkce v C ++ - Edureka

Vysvětlení

Ve výše uvedeném programu máme ve třídě přidání dvě funkce. Oba pojmenovaní přidat. Jeden má 2 parametry a druhý 3 parametry.

V hlavní funkci vytvoříme objekt přidání třídy s názvem a. Voláme funkce přidání s parametry 2 a 3 a funkce přidání jsou volány a provádějí přidání.

Takto probíhá přetížení funkce.

Pokračování v tomto článku o přetížení a přepsání funkcí v C ++

Přepsání funkce

Když má odvozená třída funkci se stejným názvem jako funkce základní třídy, je volána Přepsání funkce. Obě funkce musí mít v obou třídách stejné parametry.

Ukázkový kód pro přepsání funkce

#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ýstup:

Vysvětlení:

Ve výše uvedeném programu ukážeme základní funkci se stejným názvem v odvozené a základní třídě. Zde je objekt vytvořen z odvozené třídy, takže když zavoláme display, zobrazí se pouze podřízený objekt třídy.

Pokračování v tomto článku o přetížení a přepsání funkcí v C ++

Příkaz k provedení přepsání

Zvaž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ýstup:

Vysvětlení:

Ve výše uvedeném programu ukážeme základní funkci se stejným názvem v odvozené a základní třídě. Jediný rozdíl oproti předchozímu programu je v tom. Vytvoříme objekt podřízené třídy. Objekt podřízené třídy má odkaz na základní třídu. Toho lze dosáhnout také pomocí jiné metody,

Syntax

Parent_class_name :: function ()

Ve výše uvedeném příkladu jej používáme jako,

BaseClass :: disp ()

Toto je další způsob přepsání.

Přetížení funkce Přepsání funkce VS.

Přetížení funkce Přepsat funkci
Rozsah je stejnýRozsah je jiný
Podpisy se musí lišit (např. Parametr)Podpisy musí být stejné
Počet možných funkcí přetíženíJe možná pouze jedna hlavní funkce
Může nastat bez dědictvíVyskytuje se hlavně kvůli dědičnosti

Tak jsme dospěli ke konci tohoto článku o „Přetížení funkce a přepsání v C ++“. Pokud se chcete dozvědět více, podívejte se na Edureka, důvěryhodná online vzdělávací společnost. Školicí a certifikační kurz Edureka Java J2EE a SOA je navržen tak, aby vás vyškolil jak pro základní, tak pro pokročilé koncepty Java spolu s různými rámci Java, jako je Hibernate & Spring.

přejít na funkci c ++

Máte na nás dotaz? Uveďte to prosím v sekci komentářů tohoto blogu a my se vám ozveme co nejdříve.