Úvod do přetížení a přepsání v C ++

Začněme tím, že budeme mít základní definice pro Přetížení a Přepětí v C ++.

Přetížení : Název funkce je stejný, ale změny parametrů a vrací typ. Protože se seznámíme s rozdílem mezi přetíženými funkcemi během kompilačního času, nazývá se také polymorfismus kompilačního času.

Přepsání: Jedná se o funkci objektově orientovaného programovacího jazyka, kde funkce podřízené třídy má stejný název jako funkce třídy nadřazené. Jak převažující funkce přichází na obrázek, jakmile je objekt deklarován a funkce jsou zpřístupněny pomocí objektů; to je během provádění kódu, tento koncept potlačování je také nazýván polymorfismus runtime.

Jejich syntaxi a způsoby programování máme v pozdějších sekcích.

Syntaxe přetížení a přetažení

Níže je uvedena syntaxe přetížení a přepisu.

Syntaxe přetížení:

return_type function_name ( int param_1, string param_2)
(
//function definition
)
return_type_2 function_name ( int param_1, string param_2)
(
//function definition
)
return_type function_name ( int param_1, int param_2)
(
//function definition
)

Všichni tři společně mohou představovat příklad konceptu přetížení.

Převažující syntaxe:

Class A
(
Public:
void function_name ( int param_1, int param_2)
(
//function definition
)
);Class B : Class A
(
Public:
void function_name ( int param_1, int param_2)
(
//function definition
)
);

Výše uvedené je syntaxe nadřazené funkce. Hlavní výstup lze odvodit, jakmile deklarujeme objekt a zavoláme stejné metody z třídy A a třídy B. Ve funkcích potlačení „objektu“ hraje důležitou roli.

Nyní se podívejme na příklad, jak lépe poznat jejich funkce.

Příklady přetížení a přemostění v C ++

Zde jsou příklady přetížení a přepsání v C ++ s výstupem uvedeným níže:

Příklad č. 1 - Přetížení

Začněme jednoduchým programem.

Kód:

#include
using namespace std;
int calc(int);
float calc(float);
int calc(int, float);
int main()
(
int a = 10;
float b = 11.2;
calc(a);
calc(b);
calc(a, b);
)
int calc(int a)
(
int tot=a*a;
cout << " Area of Square A is: " << tot< )
float calc(float b)
(
float tot = b*b;
cout << " Area of Square B is: " << tot < )
int calc(int a, float b)
(
int tot = a*b;
cout << " Area of Square C is: " << tot << endl;
)
#include
using namespace std;
int calc(int);
float calc(float);
int calc(int, float);
int main()
(
int a = 10;
float b = 11.2;
calc(a);
calc(b);
calc(a, b);
)
int calc(int a)
(
int tot=a*a;
cout << " Area of Square A is: " << tot< )
float calc(float b)
(
float tot = b*b;
cout << " Area of Square B is: " << tot < )
int calc(int a, float b)
(
int tot = a*b;
cout << " Area of Square C is: " << tot << endl;
)
#include
using namespace std;
int calc(int);
float calc(float);
int calc(int, float);
int main()
(
int a = 10;
float b = 11.2;
calc(a);
calc(b);
calc(a, b);
)
int calc(int a)
(
int tot=a*a;
cout << " Area of Square A is: " << tot< )
float calc(float b)
(
float tot = b*b;
cout << " Area of Square B is: " << tot < )
int calc(int a, float b)
(
int tot = a*b;
cout << " Area of Square C is: " << tot << endl;
)

Výstup:

Co když nyní zadám nesprávné hodnoty typu dat pro proměnné a, b?

Kód:

int main()
(
int a = 10.8;
float b = 12;
calc(a);
calc(b);
calc(a, b);
)

Změnil jsem pouze hlavní část z výše uvedeného programu, takže tady jde výstup.

výstup:

Poskytuje nám výstup, protože převádí float hodnotu na typ dat int a dává nám výstup.

Nyní jako cvičení můžete zkusit změnit typ návratu funkce a parametry a hrát si s nimi.

Příklad č. 2 - Přepisování

Níže můžeme uvést příklad nadřazené funkce v C ++.

Kód:

#include
using namespace std;
class First
(
public:
virtual void Calc( int a, float b)
(
int tot= a*b;
cout << "Square of First class is: "<< tot < )
void Other()
(
cout<<"Other function in first class"< )
);
class Second : public First
(
public:
// Overriding method
void Calc(int a, float b)
(
float tot = a+b;
cout << "Addition of second class is: " < )
);
int main()
(
int a= 5;
float b=2.5;
Second s;
First &f1 = s;
f1.Calc(a, b);
s.Other();
)
#include
using namespace std;
class First
(
public:
virtual void Calc( int a, float b)
(
int tot= a*b;
cout << "Square of First class is: "<< tot < )
void Other()
(
cout<<"Other function in first class"< )
);
class Second : public First
(
public:
// Overriding method
void Calc(int a, float b)
(
float tot = a+b;
cout << "Addition of second class is: " < )
);
int main()
(
int a= 5;
float b=2.5;
Second s;
First &f1 = s;
f1.Calc(a, b);
s.Other();
)
#include
using namespace std;
class First
(
public:
virtual void Calc( int a, float b)
(
int tot= a*b;
cout << "Square of First class is: "<< tot < )
void Other()
(
cout<<"Other function in first class"< )
);
class Second : public First
(
public:
// Overriding method
void Calc(int a, float b)
(
float tot = a+b;
cout << "Addition of second class is: " < )
);
int main()
(
int a= 5;
float b=2.5;
Second s;
First &f1 = s;
f1.Calc(a, b);
s.Other();
)
#include
using namespace std;
class First
(
public:
virtual void Calc( int a, float b)
(
int tot= a*b;
cout << "Square of First class is: "<< tot < )
void Other()
(
cout<<"Other function in first class"< )
);
class Second : public First
(
public:
// Overriding method
void Calc(int a, float b)
(
float tot = a+b;
cout << "Addition of second class is: " < )
);
int main()
(
int a= 5;
float b=2.5;
Second s;
First &f1 = s;
f1.Calc(a, b);
s.Other();
)

Výstup:

Prostřednictvím výše uvedeného kódu můžeme zjistit, že když je odkaz na objekt první třídy přiřazen k objektu vytvořenému s ohledem na naši druhou třídu. A když jsme přistoupili k metodě potlačení pomocí objektu základní třídy, můžeme si jasně všimnout, že byl zobrazen odvozený výstup třídy. Tento koncept se nazývá převažující. První a druhá třída jsou základní a odvozená třída. Výstup výše uvedeného je níže:

Jako cvičení můžete vyzkoušet potlačení a přetížení funkce společně a zkontrolovat, zda je to možné, nebo zkontrolovat, jak se výstup ukáže být?

Jak to funguje?

Přetížení: Zde není žádný zvláštní bod, o kterém bychom si mohli všimnout. Musíme se ujistit, že se typ návratu nebo parametry uvnitř funkce liší. Podíváme-li se výše na strukturu programování, funkce jsou deklarovány jako první a je uvedena jejich implementace.

Přepis: Syntaxe dědičnosti a implementace funkcí jsou klíčové body, které si zde musíme všimnout. Ve výše uvedeném příkladu si můžeme všimnout, že deklarace funkce s veřejným klíčovým slovem je zcela odlišná.

A v C ++ je definice třídy zakončena středníkem (;) a pokud potřebujeme zdědit základní třídu pro podřízenou třídu, použijeme dvojtečku (:). Hlavní funkce potlačení je pozorována, když jsou objekty deklarovány a inicializovány pro třídu. Po vyvolání funkcí pomocí objektů můžeme potom jasně pochopit pojem potlačení.

Výhody

  • Jednou z hlavních výhod těchto překlenutí a přetížení je úspora času.
  • Ušetřete místo v paměti.
  • Čitelnost kódu je zvýšena.
  • Zde pro koncept přetížení funkcí můžeme použít různé stejné názvy funkcí pro různé operace, což vylučuje použití různých názvů funkcí.
  • Flexibilita a udržovatelnost kódu je snazší.
  • V případě nadřazenosti může mít podřízená třída funkce nadřazené třídy a může mít dokonce vlastní implementaci této funkce.
  • Na objekty lze odkazovat a podřízená třída může přistupovat k funkcím nadřazené i podřízené třídy.

Závěr

Nyní jsme jasně porozuměli konceptům přetížení i převahy. Při přetížení musíme zajistit, aby rozdíl v přetížených funkcích existoval buď na základě typu návratu nebo parametrů, i když definice funkcí uvnitř nich je stejná nebo odlišná.

A v případě nadřazenosti, protože se jedná o objektově orientovaný programovací koncept, můžeme využít pouze ve formě tříd využívajících funkčnost dědičnosti.

Doporučené články

Toto je průvodce přetížením a přepsáním v C ++. Zde diskutujeme úvod, jak to funguje, syntaxe, příklady a výhody přetížení a přetečení v C ++ s implementací kódu. Další informace naleznete také v následujících článcích -

  1. Přetížení v C ++
  2. Přetížení vs Overriding
  3. Převažující v PHP
  4. Převažující v C ++
  5. Převažující v Javě
  6. Polymorfismus v Javě
  7. Prvních 11 funkcí a výhod C ++
  8. Převažující v Pythonu | Funkce a pravidla

Kategorie: