Johdanto C ++: n ylikuormitukseen ja ohittamiseen

Aloitetaan tämä saamalla perusmääritelmät ylikuormitukselle ja ohittamiselle C ++: ssa.

Ylikuormitus : Toiminnon nimi on sama, mutta parametrit ja palautustyyppi muuttuvat. Koska saamme tietää eroa ylikuormitettujen funktioiden välillä kompimointiaikana, sitä kutsutaan myös Compile time -polymorfismiksi.

Ohittaminen: Tämä on oliokeskeisen ohjelmointikielen ominaisuus, jossa lapsiluokan toiminnolla on sama nimi kuin vanhemman luokkatoiminnolla. Kun ohjaava toiminnallisuus tulee kuvaan, kun objekti on ilmoitettu ja toimintoihin pääsee objektien avulla; ts. koodin suorittamisen aikana tätä ohittamisen käsitettä kutsutaan myös ajoajan polymorfismiksi.

Niiden syntaksi ja ohjelmointitavat ovat jäljempänä.

Ylikuormituksen ja ohittamisen syntaksi

Tässä on alla olevan ylikuormituksen ja ohittamisen syntaksi.

Syntaksin ylikuormitus:

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
)

Kaikki kolme yhdessä voivat olla esimerkki ylikuormituksen käsitteestä.

Ohittava syntaksi:

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

Yllä oleva on syntaksi ensisijaiselle toiminnalle. Päälähtö voidaan päätellä, kun olemme julistaneet objektin ja kutsumme samoja menetelmiä luokkaan A ja luokkaan B. Objektin ohittamisen toiminnallisuudessa on tärkeä rooli.

Katsotaan nyt, että kukin esimerkki oppii tuntemaan toimintonsa paremmin.

Esimerkkejä C ++: n ylikuormituksesta ja ohittamisesta

Tässä on esimerkkejä C ++: n ylikuormituksesta ja ohittamisesta alla esitetyllä tuotoksella:

Esimerkki 1 - ylikuormitus

Aloitetaan yksinkertaisella ohjelmalla.

Koodi:

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

lähtö:

Entä jos annan väärät tietotyyppiarvot muuttujille a, b?

Koodi:

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

Olen vaihtanut vain pääosan yllä olevasta ohjelmasta, joten tässä menee lähtö.

lähtö:

Se antaa meille tuotoksen, kun se aikoo muuntaa kelluvuusarvon int-tietotyypiksi ja antaa meille tuotoksen.

Nyt harjoituksena voit yrittää muuttaa funktion paluutapaa ja parametreja ja pelata heidän kanssaan.

Esimerkki 2 - ohittaminen

Alla on esimerkki C ++: n ensisijaisesta toiminnasta.

Koodi:

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

lähtö:

Yllä olevan koodin avulla voimme havaita, että kun ensimmäisen luokan objektin viite osoitetaan objektille, joka luodaan toisen luokan suhteen. Ja sitten kun pääsimme ohitusmenetelmään käyttämällä perusluokan objektia, voimme selvästi huomata, että johdettu luokan lähtö on näytetty. Tätä käsitettä kutsutaan pakottavaksi. Ensimmäinen ja toinen luokka ovat vastaavasti perusluokka ja johdettu luokka. Edellä olevien tulokset ovat seuraavat:

Harjoituksena voit kokeilla toiminnon ohittamista ja ylikuormitusta yhdessä ja tarkistaa, onko se mahdollista, tai tarkistaa, kuinka lähtö osoittautuu?

Kuinka se toimii?

Ylikuormitus: Tässä ei ole mitään erityistä seikkaa, josta voisimme saada muistiinpanon. Meidän on varmistettava, että paluutapa tai toiminnon sisällä olevat parametrit vaihtelevat. Jos tarkastelemme yllä ohjelmointirakennetta, toiminnot julistetaan ensin ja niiden toteutus annetaan.

Ohittaminen: Perintö syntaksi ja toimintojen toteuttaminen ovat keskeisiä huomionarvoisia kohtia. Yllä olevassa esimerkissä voimme huomata, että toiminnan ilmoittaminen julkisella avainsanalla on aivan erilainen.

Ja C ++: ssa luokan määritelmä päättyy puolipisteellä (;) ja jos meidän on perittävä perusluokka lapsiluokalle, käytämme kaksoispiste (:) -merkkiä. Ohituksen päätoiminto havaitaan, kun esineet julistetaan ja alustetaan luokalle. Objekteja käyttävien funktioiden kutsumisen jälkeen ymmärrämme selvästi ylikuormituksen käsitteen.

edut

  • Yksi tärkein etu näistä ylikuormituksista on ajansäästö.
  • Säästä muistitilaa.
  • Koodin luettavuus paranee.
  • Tässä toiminnon ylikuormituskäsitteessä voimme käyttää erilaisia ​​samoja toimintonimiä eri toimintoihin eliminoimalla eri toimintonimien käytön.
  • Koodin joustavuus ja ylläpidettävyys muuttuvat helpommaksi.
  • Ohittamisessa lapsiluokalla voi olla vanhemman luokan tehtäviä ja sillä voi olla jopa oma toimintansa kyseisessä toiminnassa.
  • Kohteisiin voidaan viitata, ja lapsiluokka voi käyttää sekä vanhemmaluokan että lapsiluokan toimintoja.

johtopäätös

Olemme nyt ymmärtäneet selvästi sekä ylikuormituksen että ohittamisen käsitteet. Ylikuormituksen yhteydessä meidän on varmistettava, että ylikuormitettujen funktioiden ero esiintyy joko palautustyypin tai parametrien perusteella, vaikka funktion määritelmä niiden sisällä on sama tai erilainen.

Ja ohittamisen tapauksessa, koska se on oliokeskeistä ohjelmointikäsitettä, voimme hyödyntää vain luokkien muodossa käyttämällä perinnöllisyyttä.

Suositellut artikkelit

Tämä on opas ylikuormitukseen ja ohittamiseen C ++: ssa. Tässä keskustellaan johdannosta, miten se toimii, syntaksista, esimerkkeistä ja ylikuormituksen ja ylikuormituksen eduista C ++: ssa koodin toteutuksen kanssa. Voit myös katsoa seuraavia artikkeleita saadaksesi lisätietoja -

  1. Ylikuormitus C ++: ssa
  2. Ylikuormitus vs ohittaminen
  3. Ohittaminen PHP: ssä
  4. Ohittaminen C ++: ssa
  5. Ylivoimainen Java
  6. Polymorfismi Java
  7. C ++: n 11 tärkeintä ominaisuutta ja hyötyä
  8. Ohittaminen Pythonissa Toiminta ja säännöt