Uvod v preobremenitev in preglasitev v C ++

Začnimo to z osnovnimi definicijami za preobremenitev in preglasitev v C ++.

Preobremenitev : Ime funkcije je enako, vendar se parametri in vrsta vrnitve spreminjajo. Ker bomo spoznali razliko med preobremenjenimi funkcijami med časom prevajanja, jo imenujemo tudi polimorfizem Compile time.

Prevladovanje: To je značilnost objektno usmerjenega programskega jezika, kjer ima funkcija otroškega razreda isto ime kot funkcija nadrejenega razreda. Ko preglasovanje funkcionalnosti pride v sliko, ko je objekt razglašen in funkcije do njih dostopajo s pomočjo predmetov; med izvajanjem kode, ta pojem prevlado imenujemo tudi polimorfizem časa delovanja.

V naslednjih razdelkih imamo njihovo skladnjo in načine programiranja.

Sintaksa preobremenitve in preglasitve

Tu je spodaj navedena sintaksa preobremenitve in preglasitve.

Preobremenitev sintakse:

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
)

Vsi trije skupaj lahko predstavljajo primer koncepta preobremenitve.

Prevladujoča sintaksa:

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

Zgoraj je sintaksa za prevladujočo funkcionalnost. Glavni izhod je mogoče sklepati, ko razglasimo predmet in pokličemo iste metode iz razredov A in razreda B. Pri funkcionalnosti preglasitve "predmeta" igra pomembno vlogo.

Zdaj pa si poglejmo primer za boljše spoznavanje njihove funkcionalnosti.

Primeri preobremenitve in preglasitve v C ++

Tu so primeri preobremenitve in preglasitve v C ++ s spodnjim izhodom:

Primer # 1 - Preobremenitev

Začnimo s preprostim programom.

Koda:

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

Izhod:

Zdaj pa kaj, če za spremenljivke a, b dam napačne vrednosti podatkovnih vrst?

Koda:

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

Glavni del iz zgornjega programa sem spremenil, tako da tukaj gre za izhod.

izhod:

Daje nam izhod, saj bo pretvoril float vrednost v int tip podatkov in nam dal izhod.

Zdaj lahko poskusite spremeniti vrsto in parametre vrnitve funkcije in se z njimi poigrati.

Primer # 2 - Prevladovanje

Spodaj imamo primer prevladujoče funkcionalnosti v C ++.

Koda:

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

Izhod:

Skozi zgornjo kodo lahko ugotovimo, da ko je referenca prvovrstnega predmeta dodeljena predmetu, ustvarjenemu glede na naš drugi razred. In potem, ko smo dostopali do metode preglasitve s predmetom osnovnega razreda, lahko jasno opazimo, da je bil prikazan izpeljani izhod razreda. Ta koncept se imenuje prevladujoč. Prvi in ​​drugi razred sta osnovni in izpeljani razred. Rezultat zgornjega je spodaj:

Ali lahko kot vajo poskusite skupaj preobremeniti in preobremeniti funkcijo in preveriti, ali je to mogoče, ali preveriti, kakšen je izhod?

Kako deluje?

Preobremenjenost: Tukaj ni posebnega pomena, na katerega bi se lahko seznanili. Poskrbeti moramo, da se vrsta vrnitve ali parametri znotraj funkcije razlikujejo. Če pogledamo zgoraj programsko strukturo, se funkcije najprej razglasijo in damo njihovo izvajanje.

Prevladovanje: Sintaksa dedovanja in izvajanje funkcij sta ključni točki, ki ju je treba opaziti. V zgornjem primeru lahko opazimo, da je deklaracija funkcije z javno ključno besedo precej drugačna.

V C ++ se definicija razreda konča s podpičjem (;) in če moramo osnovni razred podedovati po otroškem razredu, uporabimo znak dvopičje (:). Glavna funkcionalnost preglasitve se opazi, ko se predmeti razglasijo in inicializirajo za razred. Po klicanju funkcij s pomočjo predmetov lahko potem jasno razumemo koncept preglasitve.

Prednosti

  • Glavna prednost teh preobremenitev in preobremenitve je prihranek časa.
  • Prihranite pomnilniški prostor.
  • Večja je berljivost kode.
  • Tu lahko za koncept preobremenitve funkcij uporabimo različna enaka imena funkcij za različne operacije, s čimer odstranimo uporabo različnih imen funkcij.
  • Prilagodljivost in vzdrževanje kode postaneta lažja.
  • V primeru prevladujočega vpliva ima lahko otroški razred funkcije nadrejenega razreda in lahko celo izvaja njegovo funkcijo.
  • Objekti se lahko sklicujejo, do funkcije nadrejenega in otroškega razreda pa lahko dostopa do otroškega razreda.

Zaključek

Zdaj smo jasno razumeli koncepte tako preobremenitve kot prevladovanja. Pri preobremenitvi moramo poskrbeti, da razlika v preobremenjenih funkcijah obstaja bodisi glede na vrsto vrnitve ali parametre, čeprav je definicija funkcij znotraj njih enaka ali različna.

V primeru prevladovanja, saj gre za objektno usmerjen programski koncept, lahko uporabimo le v obliki razredov z uporabo funkcije dedovanja.

Priporočeni članki

To je vodnik za preobremenitev in preglasitev v C ++. Tukaj razpravljamo o uvodu, kako deluje, sintakso, primeri in prednosti preobremenitve in preglasitve v C ++ z implementacijo kode. Če želite izvedeti več, si oglejte tudi naslednje članke -

  1. Preobremenitev v C ++
  2. Preobremenitev vs Prevladovanje
  3. Prevladujoče v PHP
  4. Prevlado v C ++
  5. Prevladovanje v Javi
  6. Polimorfizem na Javi
  7. 11 najboljših lastnosti in prednosti C ++
  8. Prevlada v Pythonu | Funkcija in pravila