Úvod do preťaženia a ovládania v C ++

Začnime tým, že budeme mať základné definície pre preťaženie a potlačenie v C ++.

Preťaženie : Názov funkcie je rovnaký, ale zmeny parametrov a vrátenia typu. Pretože sa dozvieme rozdiel medzi preťaženými funkciami počas kompilácie, nazýva sa to aj polymorfizmus kompilácie času.

Prepísanie: Toto je funkcia objektovo orientovaného programovacieho jazyka, kde funkcia podradenej triedy má rovnaké meno ako funkcia triedy rodiča. Ako prvoradá funkčnosť prichádza do obrazu, akonáhle je objekt deklarovaný a funkcie sú sprístupnené pomocou objektov; to je počas vykonávania kódu, tento pojem nahradenia sa tiež nazýva polymorfizmus v čase vykonávania.

V ďalších častiach máme ich syntax a spôsoby programovania.

Syntax preťaženia a prekonania

Nižšie je uvedená syntax preťaženia a potlačenia.

Syntax preťaženia:

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šetky tri spolu môžu predstavovať príklad koncepcie preťaženia.

Hlavná syntax:

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
)
);

Vyššie uvedené je syntaxou nadradenej funkcie. Hlavný výstup sa dá odvodiť, akonáhle deklarujeme objekt a zavoláme rovnaké metódy z triedy A a triedy B. Vo funkcii potlačenia objektu hrá dôležitú úlohu „objekt“.

Teraz si ukážme príklad, ako lepšie spoznať ich funkčnosť.

Príklady preťaženia a prekonania v C ++

Tu sú príklady preťaženia a pretečenia v C ++ s výstupom uvedeným nižšie:

Príklad č. 1 - Preťaženie

Začnime jednoduchým programom.

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ýkon:

Čo ak teraz zadám nesprávne hodnoty typu údajov pre premenné a, b?

kód:

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

Z vyššie uvedeného programu som zmenil iba hlavnú časť, takže tu ide o výstup.

výkon:

Poskytuje výstup, pretože prevádza plávajúcu hodnotu na typ údajov int a poskytuje výstup.

Teraz ako cvičenie môžete skúsiť zmeniť typ návratu funkcie a parametre a pohrať sa s nimi.

Príklad č. 2 - Nadradené

Nižšie uvádzame príklad úplnej funkčnosti v jazyku 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ýkon:

Prostredníctvom vyššie uvedeného kódu zistíme, že keď je odkaz na objekt prvej triedy priradený k objektu vytvorenému s ohľadom na našu druhú triedu. A potom, keď sme sa dostali k metóde nahradenia pomocou objektu základnej triedy, môžeme si jasne všimnúť, že sa zobrazil odvodený výstup triedy. Tento koncept sa nazýva prvoradý. Prvá a druhá trieda sú Základná a odvodená trieda. Výstup vyššie uvedeného je nižšie:

Ako cvičenie môžete skúsiť prekonať a preťažiť funkciu spoločne a skontrolovať, či je to možné, alebo skontrolovať, ako sa výstup ukáže byť?

Ako to funguje?

Preťaženie: Neexistuje žiadny osobitný bod, o ktorom by sme si mohli všimnúť. Musíme sa uistiť, že typ návratu alebo parametre vo funkcii sa líšia. Ak sa pozrieme vyššie na štruktúru programovania, funkcie sú deklarované ako prvé a je uvedená ich implementácia.

Hlavné : Syntax dedičstva a implementácia funkcií sú kľúčové body, ktoré si treba všimnúť tu. Vo vyššie uvedenom príklade si môžeme všimnúť, že vyhlásenie o funkcii s verejným kľúčovým slovom je úplne odlišné.

A v C ++ je definícia triedy ukončená bodkočiarkou (;) a ak potrebujeme zdediť základnú triedu s podradenou triedou, použijeme dvojbodku (:). Hlavná funkčnosť potlačenia sa pozoruje, keď sú objekty deklarované a inicializované pre triedu. Po vyvolaní funkcií pomocou predmetov potom môžeme jasne porozumieť pojmu premostenie.

výhody

  • Jednou z hlavných výhod týchto hlavných a preťažujúcich je úspora času.
  • Ušetrite miesto v pamäti.
  • Čitateľnosť kódu sa zvyšuje.
  • Tu pre koncepciu preťaženia funkcií môžeme použiť rôzne rovnaké názvy funkcií pre rôzne operácie, čo vylučuje použitie rôznych názvov funkcií.
  • Flexibilita a udržiavateľnosť kódu je jednoduchšia.
  • V prípade nadradenej triedy môže mať podradená trieda funkcie nadradenej triedy a môže mať dokonca vlastnú implementáciu tejto funkcie.
  • Na objekty je možné odkazovať a podriadená trieda má prístup k funkciám rodičovskej triedy aj podradenej triedy.

záver

Teraz sme jasne pochopili koncepcie preťaženia aj prvoradého riešenia. Pri preťažení sa musíme uistiť, že rozdiel v preťažených funkciách existuje buď na základe typu návratu alebo parametrov, hoci definícia funkcie v nich je rovnaká alebo rôzna.

A v prípade nadradenosti, pretože sa jedná o objektovo orientovaný programový koncept, môžeme ich využívať iba vo forme tried využívajúcich funkčnosť dedičnosti.

Odporúčané články

Toto je sprievodca preťažením a potlačením v C ++. Tu si predstavíme úvod, ako to funguje, syntax, príklady a výhody preťaženia a prepísania v C ++ s implementáciou kódu. Ďalšie informácie nájdete aj v nasledujúcich článkoch -

  1. Preťaženie v C ++
  2. Preťaženie verzus overriding
  3. Prevažovanie v PHP
  4. Prevažujúce v C ++
  5. Prevláda v Jave
  6. Polymorfizmus v Jave
  7. Prvých 11 funkcií a výhod C ++
  8. Prevládajúce v Pythone Funkcia a pravidlá

Kategórie: