Sissejuhatus C ++ ülekoormamisele ja alistamisele

Alustame seda sellega, et meil on C ++ -s ülekoormamise ja alistamise põhimääratlused.

Ülekoormus : funktsiooni nimi on sama, kuid parameetrid ja naasmise tüüp muutuvad. Kuna tutvume kompileerimise ajal ülekoormatud funktsioonide erinevusega, nimetatakse seda ka kompileerimisaja polümorfismiks.

Ülimus: see on objektorienteeritud programmeerimiskeele funktsioon, kus lasteklassi funktsioonil on sama nimi kui vanema klassifunktsioonil. Kuna esmane funktsionaalsus tuleb pildile, kui objekt on kuulutatud ja funktsioonide juurde pääseb objektide abil; st koodi täitmise ajal nimetatakse seda ületamise kontseptsiooni ka käitusaja polümorfismiks.

Nende süntaks ja programmeerimisviisid on meil hilisemates lõikudes.

Ülekoormamise ja alistamise süntaks

Siin on allpool toodud ülekoormamise ja alistamise süntaks.

Süntaksi ülekoormamine:

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
)

Kõik need kolm koos võivad olla näide ülekoormamise kontseptsioonist.

Ülimuslik süntaks:

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

Ülaltoodud on ülimusliku funktsiooni süntaks. Põhiväljundi saab järeldada, kui oleme kuulutanud objekti ja kutsunud samad meetodid klassidest A ja B välja. Objekti alistamise funktsionaalsuses on oluline roll.

Vaatame nüüd näiteid igaühe kohta nende funktsionaalsuse paremaks tundmaõppimiseks.

C ++ ülekoormamise ja alistamise näited

Siin on näited ülekoormamise ja alistamise kohta C ++ allpool toodud väljundiga:

Näide nr 1 - ülekoormamine

Alustame lihtsa programmiga.

Kood:

#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äljund:

Mis siis saab, kui ma annan muutujate a, b vale andmetüübi väärtused?

Kood:

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

Olen ülaltoodud programmist muutnud ainult põhiosa, nii et siin läheb väljund.

väljund:

See annab meile väljundi, kuna see muudab ujuki väärtuse int-andmetüübiks ja annab meile väljundi.

Nüüd võite proovida funktsiooni tagastamise tüüpi ja parameetreid muuta ning nendega mängida.

Näide 2 - ülimuslik

Allpool on näide C ++ ülimuslikkuse kohta.

Kood:

#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äljund:

Ülaltoodud koodi kaudu võime leida, et kui esimese klassi objektile antakse viide objektile, mis on loodud seoses meie teise klassiga. Ja siis, kui me põhiklassi objekti kasutades pääsesime alistusmeetodile, võime selgelt märgata, et tuletatud klassi väljund on kuvatud. Seda kontseptsiooni nimetatakse ülimuslikuks. Esimene ja teine ​​klass on vastavalt baas- ja tuletatud klass. Eespool toodu on järgmine:

Harjutusena võite proovida funktsiooni ületäitmist ja ülekoormamist ning kontrollida, kas see on võimalik, või kontrollida, kuidas väljund osutub?

Kuidas see töötab?

Ülekoormus: siin pole mingit erilist punkti, millest meil märkust oleks. Peame tagama, et tagastamise tüüp või funktsiooni sees olevad parameetrid erinevad. Kui vaatame ülal programmeerimisstruktuuri, deklareeritakse esmalt funktsioonid ja antakse nende rakendamine.

Ülimus: pärandi süntaks ja funktsioonide rakendamine on siin peamised punktid, mida tuleb tähele panna. Ülaltoodud näites võime märgata, et funktsiooni deklareerimine avaliku märksõnaga on üsna erinev.

Ja klassis C ++ lõpeb klassi määratlus semikooloniga (;) ja kui peame põhiklassi pärandama lasteklassile, kasutame koolonit (:) sümbolit. Ülekirjutamise peamist funktsionaalsust täheldatakse, kui objektid deklareeritakse ja initsialiseeritakse klassile. Pärast objektide abil funktsioonide kutsumist saame selgesti aru ülekaalu kontseptsioonist.

Eelised

  • Nende ülekaalu ja ülekoormamise peamine eelis on aja kokkuhoid.
  • Salvestage mälu.
  • Koodi loetavus on paranenud.
  • Funktsioonide ülekoormamise kontseptsioonis saame siin erinevate toimingute jaoks kasutada erinevaid samu funktsioonide nimesid, välistades erinevate funktsioonide nimede kasutamise.
  • Koodi paindlikkus ja hooldatavus muutuvad lihtsamaks.
  • Ülekirjutamise korral võivad lasteklassil olla vanemklassi funktsioonid ja tal võib olla isegi selle funktsiooni rakendamine.
  • Objektidele saab viidata ja lasteklassile pääseb juurde nii vanema klassi kui ka lasteklassi funktsioonidele.

Järeldus

Oleme nüüd selgelt aru saanud nii ülekoormamise kui ka ülimuslikkuse mõistetest. Ülekoormamisel peame veenduma, et ülekoormatud funktsioonide erinevus eksisteerib kas tagastamise tüübi või parameetrite alusel, ehkki funktsioonide määratlus nende sees on sama või erinev.

Ja ülekirjutamise korral, kuna see on objektorienteeritud programmeerimiskontseptsioon, saame pärandi funktsionaalsust kasutades kasutada ainult klasside vormis.

Soovitatavad artiklid

See on juhend C ++ ülekoormamise ja alistamise kohta. Siin arutleme sissejuhatuse üle, kuidas see töötab, süntaksit, näiteid ja ülekoormamise eeliseid ning C ++-s ülekirjutamist koos koodi rakendamisega. Lisateabe saamiseks võite vaadata ka järgmisi artikleid -

  1. C ++ ülekoormus
  2. Ülekoormamine vs alistamine
  3. Ülekaalus PHP-s
  4. Esmatähtis C ++ korral
  5. Ülekaalus Java
  6. Polümorfism Java-s
  7. C ++ 11 peamist funktsiooni ja eelist
  8. Üleminek Pythonis | Funktsioon ja reeglid

Kategooria: