Uvod u preopterećenje i preglasavanje u C ++

Započnimo s osnovnim definicijama preopterećenja i preglasavanja u C ++.

Preopterećenje : Naziv funkcije je isti, ali parametri i vrsta povratka se mijenjaju. Budući da ćemo upoznati razliku između preopterećenih funkcija tijekom vremena sastavljanja, to se naziva i polimorfizam Compile time.

Poništavanje: Ovo je značajka objektno-orijentiranog programskog jezika gdje funkcija dječje klase ima isto ime kao i funkcija roditeljske klase. Kao što je presudna funkcionalnost u sliku nakon što je objekt deklariran i funkcijama se pristupa pomoću objekata; tj. tijekom izvođenja koda, ovaj se pojam nadjačavanja naziva i polimorfizmom vremena izvođenja.

U sljedećim odjeljcima imamo njihovu sintaksu i načine programiranja.

Sintaksa preopterećenja i prevladavanja

Slijedi sintaksa preopterećenja i preklapanja.

Preopterećenje 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
)

Sva trojica zajedno mogu činiti primjer koncepta Preopterećenja.

Poništavanje sintakse:

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

Gore je sintaksa za prevladavajuću funkcionalnost. Glavni se izlaz može zaključiti nakon što deklariramo objekt i nazovemo iste metode iz klase A i klase B. U funkciji nadjačavanja "Objekta" igra važnu ulogu.

Sada ćemo vidjeti svaki primjer za bolje upoznavanje njihove funkcionalnosti.

Primjeri preopterećenja i preglasavanja u C ++

Evo primjera preopterećenja i preglasavanja u C ++ s izlazom danim u nastavku:

Primjer br. 1 - Preopterećenje

Započnimo s jednostavnim programom.

Kodirati:

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

Izlaz:

E sad, što ako za varijable a, b dam pogrešne vrijednosti tipa podataka?

Kodirati:

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

Promijenio sam samo glavni dio iz gornjeg programa, pa evo i rezultata.

izlaz:

Daje nam izlaz kao što će pretvoriti float vrijednost u int tip podataka i daje nam izlaz.

Sada kao vježbu možete pokušati promijeniti vrstu i parametre vraćanja funkcije i igrati se s njima.

Primjer 2 - Poništavanje

Ispod možemo imati primjer važne funkcionalnosti u C ++.

Kodirati:

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

Izlaz:

Kroz gornji kôd možemo utvrditi da kada se referenca prvoklasnog objekta dodjeljuje objektu stvorenom u odnosu na našu drugu klasu. I onda kad smo pristupili metodi preglasavanja pomoću objekta osnovne klase, možemo jasno primijetiti da je prikazani izlaz izvedene klase. Ovaj se koncept naziva prevladavanjem. Prvi i Drugi razred su osnovna i izvedena klasa. Izlaz iz navedenog je dolje:

Možete li pokušati zajedno nadjačati i preopteretiti funkciju i provjeriti je li moguće ili provjeriti kakav je izlaz?

Kako radi?

Preopterećenje: Ovdje nema posebne točke na koju bismo mogli imati na umu. Moramo se pobrinuti da se vrsta povratka ili parametri unutar funkcije razlikuju. Ako gore pogledamo programsku strukturu, funkcije se najprije deklariraju i daje se njihova implementacija.

Poništavanje: Sintaksa nasljeđivanja i implementacija funkcija su ključne točke koje se ovdje moraju primijetiti. U gornjem primjeru možemo primijetiti da je deklaracija o funkciji s javnom ključnom riječju sasvim drugačija.

I u C ++, definicija klase završava točkom dvotočke (;), a ako trebamo naslijediti osnovnu klasu prema dječjoj klasi, koristimo dvotočku (:) simbol. Glavna funkcionalnost poništavanja promatra se kada se objekti deklariraju i inicijaliziraju za klasu. Nakon poziva funkcija pomoću objekata, tada možemo jasno razumjeti pojam prevladavanja.

prednosti

  • Glavna prednost ovih preopterećenja i preopterećenja je ušteda vremena.
  • Uštedite memorijski prostor.
  • Povećava se čitljivost koda.
  • Ovdje za koncept preopterećenja funkcije možemo upotrijebiti različita ista nazive funkcija za različite operacije uklanjajući upotrebu različitih imena funkcija.
  • Fleksibilnost i održivost koda postaju lakša.
  • U slučaju prevladavanja, dječja klasa može imati funkcije nadređene klase i čak može imati vlastitu provedbu te funkcije.
  • Objekti se mogu referencirati, a dječjoj klasi može se pristupiti funkcijama i nadređene i dječje klase.

Zaključak

Sada smo jasno razumjeli koncepte i preopterećenja i prekomjernog preopterećenja. Kod preopterećenja moramo biti sigurni da razlika u preopterećenim funkcijama postoji ili na temelju vrste povratka ili parametara, mada je definicija funkcija unutar njih ista ili različita.

A u slučaju prevladavanja, budući da je to objektno orijentirani koncept programiranja, možemo koristiti samo u obliku klasa koristeći funkciju nasljeđivanja.

Preporučeni članci

Ovo je vodič za preopterećenje i preglasavanje u C ++. Ovdje smo raspravljali o uvodu, kako to radi, sintaksi, primjerima i prednostima preopterećenja i preglasavanja u C ++ s implementacijom koda. Možete pogledati i sljedeće članke da biste saznali više -

  1. Preopterećenje u C ++
  2. Preopterećenje vs Prevladavanje
  3. Prevladavanje u PHP-u
  4. Poništavanje u C ++
  5. Prevladavanje u Javi
  6. Polimorfizam u Javi
  7. Top 11 značajki i prednosti C ++
  8. Prevladavanje u Pythonu | Funkcija i pravila

Kategorija: