C ++

C ++ Funkcijos perkrova

C ++ Funkcijos perkrova

C ++ yra lanksti bendrosios paskirties programavimo kalba. Šią programavimo kalbą iš pradžių sukūrė danų informatikė Bjarne Stroustrup dar 1985 m. C ++ palaiko polimorfizmą, paveldėjimą ir kt. Šis straipsnis apima funkcijų perkrovą, kad būtų pasiektas kompiliavimo laiko polimorfizmas C ++ programavimo kalboje.

Kas yra funkcija?

Funkcija yra ne kas kita, kaip konkretus kodo fragmentas, kuris atlieka konkrečią užduotį, remdamasis pateiktais įvestimis, ir grąžina prašomus rezultatus vartotojui išvesties forma. Funkcijos naudojamos pasikartojančiam kodui pašalinti didelėse kodų bazėse.

Apibrėžę funkciją, vėliau galėsite ją pakartotinai naudoti toje pačioje programoje arba kitoje programoje.

Funkcijų sintaksė

Funkcija C ++ turi tokią sintaksę:

returnType functionName (parametras_ sąrašas)



return return_value;

„ReturnType“, parametro sąrašas ir grąžinimo sakinys yra neprivalomi. Funkcija C ++ gali pateikti ne daugiau kaip vieną reikšmę. Jei funkcija negrąžina jokios vertės, returnType turėtų būti apibrėžta kaip negaliojanti.

Kas yra funkcijos perkrova?

C ++ versijoje keli funkcijų apibrėžimai gali turėti tą patį funkcijos pavadinimą, tačiau su skirtingais parametrais. Tai vadinama funkcijų perkrova. Naudojant funkcijos perkrovos funkciją, galima pasiekti kompiliavimo laiko polimorfizmą C++.

Funkcijos gali būti perkrautos šiais būdais:

  1. Parametrų skaičius gali būti skirtingas
  2. Parametrų duomenų tipas gali būti skirtingas
  3. Parametrų seka gali būti skirtinga

Tačiau grąžinama vertė nėra vertinama dėl funkcijos perkrovos. 

Šios funkcijos yra perkrautos:

  1. int papildymas (int a, int b)
  2. plūdės papildymas (float f, gloat g)
  3. plūdės papildymas (plūdė f, int i)
  4. plūdės papildymas (int i, plūdė f)
  5. int papildymas (int a, int b, int c)
  6. plūdės papildymas (plūdė f, plūdė g, plūdė h)

Kaip matote, naudojant funkcijų perkrovos funkciją C ++, gali būti keli apibrėžimai / funkcijos su tuo pačiu funkcijos pavadinimu ir toje pačioje srityje.

Be funkcijos perkrovos funkcijos, kiekvienam variantui turėsite parašyti atskirą funkciją [pvz., Pridėjimas_1 (), pridėjimas_2 () ir kt.]. Pvz., Norint pridėti du sveikus skaičius, gali tekti parašyti „add_1“ (), kad pridėtumėte dvi plūdes, ir kt. Tačiau, kaip matote aukščiau, funkcijų perkrovos funkcija gali būti naudojama apibrėžiant kelis funkcijos „papildymas ()“ variantus, išlaikant tą patį funkcijos pavadinimą.

Šios funkcijos nelaikomos perkrautomis, nes vienintelis skirtumas tarp šių dviejų yra grąžinimo tipas (grąžinimo tipas nelaikomas funkcijų perkrova C ++):

  1. int papildymas (int a, int b)
  2. plūdinis priedas (int a, int b)

Pavyzdžiai

Dabar, kai suprantate funkcijų perkrovos sąvoką, mes eisime per keletą veikiančių pavyzdinių programų, kad suprastume šią sąvoką aiškiau. Pateiksime šiuos pavyzdžius:

  1. 1 pavyzdys: paprasta funkcija
  2. 2 pavyzdys: Paprasta papildymo funkcija
  3. 3 pavyzdys: Funkcijos perkrova (1)
  4. 4 pavyzdys: Funkcijos perkrova (2)
  5. 5 pavyzdys: Funkcijos perkrova (3)

Pirmieji du pavyzdžiai paaiškina, kaip įprastos funkcijos veikia C ++, o paskutiniai trys pavyzdžiai rodo funkcijų perkrovos funkciją C++.

1 pavyzdys: paprasta funkcija

Šiame pavyzdyje mes parodysime, kaip paprastą funkciją galima apibrėžti ir iškviesti C++. Apibrėžsime klasę, vadinamą „Display“, ir viešąją funkciją, pavadintą „display“ ().„Iš funkcijos„ main () “iškviesime funkciją„ display () “, naudodami klasės objektą„ Display “(d).

# įtraukti
naudojant vardų sritį std;
klasės ekranas

vieša:
negaliojantis ekranas ()

cout << "Hello World!" << endl;

;
int main ()

Ekranas d;
d.rodyti ();
grąžinti 0;

2 pavyzdys: Paprasta papildymo funkcija

Šiame pavyzdyje mes parodysime, kaip apibrėžti paprastą funkciją „pridėjimas ()“ C++. Apibrėžsime klasę, pavadintą „DemoAdd“, ir viešąją funkciją, pavadintą „papildymas ().„Iš„ main () “funkcijos„ DemoAdd “klasės objekto (d) pagalba iškviesime funkciją„ add () “.

Šiame pavyzdyje dabartinis funkcijos „add ()“ įgyvendinimas priima tik du sveiko skaičiaus parametrus. Tai reiškia, kad dabartinė funkcija „papildymas ()“ gali pridėti tik du sveikus skaičius.

Jei norite pridėti tris sveikus skaičius, o ne du, galima apibrėžti funkciją su kitu pavadinimu, pvz., „Papildymas_1 ()“. C ++ funkcija gali būti perkrauta, o tai reiškia, kad galima apibrėžti kitą funkcijos „papildymas ()“ apibrėžimą, kad būtų pridėti trys sveikieji skaičiai ir išlaikytas tas pats vardas, t.e., „Papildymas ().“Kitame pavyzdyje panagrinėsime, kaip perkrauti funkciją„ papildymas () “.

# įtraukti
naudojant vardų sritį std;
klasė „DemoAdd“

vieša:
int papildymas (int a, int b)

int rezultatas;
rezultatas = a + b;
grąžinimo rezultatas;

;
int main ()

DemoPridėti d;
int i1 = 10, i2 = 20, res;
res = d.pridėjimas (i1, i2);
cout << "Result = " << res << endl;
grąžinti 0;

3 pavyzdys: Funkcijos perkrova (1)

Ankstesniame pavyzdyje mes apibrėžėme funkciją „papildymas ()“, kad pridėtume du skaičius ir grąžintume apskaičiuotą rezultatą. Dabar šiame pavyzdyje perkrausime funkciją „papildymas ()“, kad pridėtume tris sveikus skaičius. Taigi, funkciją „papildymas ()“ galėsime iškviesti dviem sveiko skaičiaus argumentais ir trimis sveiko skaičiaus argumentais.

Be funkcijų perkrovos funkcijos turėtume parašyti kitą funkciją kitu pavadinimu.

# įtraukti
naudojant vardų sritį std;
klasė „DemoAdd“

vieša:
// Pirmoji funkcijos pridėjimo apibrėžtis ()
int papildymas (int a, int b)

int rezultatas;
rezultatas = a + b;
grąžinimo rezultatas;

// Funkcijos „Add ()“ versija perkrauta
int papildymas (int a, int b, int c)

int rezultatas;
rezultatas = a + b + c;
grąžinimo rezultatas;

;
int main ()

DemoPridėti d;
int i1 = 10, i2 = 20, i3 = 30, res1, res2;
res1 = d.pridėjimas (i1, i2); // papildymas () su 2 parametrais
res2 = d.pridėjimas (i1, i2, i3); // papildymas () su 3 parametrais
cout << "Result = " << res1 << endl;
cout << "Result = " << res2 << endl;
grąžinti 0;

4 pavyzdys: Funkcijos perkrova (2)

Ankstesniuose šio straipsnio skyriuose sužinojote, kad funkcijų perkrovą galima atlikti atsižvelgiant į parametrų tipo skirtumus. Čia mes perkraukėme funkciją „add ()“ pagal parametro duomenų tipą. Pirmojoje papildymo funkcijos versijoje pridėsime du sveiko skaičiaus kintamuosius; o antrojoje versijoje pridėsime du „float“ tipo kintamuosius.

# įtraukti
naudojant vardų sritį std;
klasė „DemoAdd“

vieša:
// Pirmasis papildymo apibrėžimas ()
int papildymas (int a, int b)

int rezultatas;
rezultatas = a + b;
grąžinimo rezultatas;

// Perkrauto funkcijos apibrėžimas
plūdės papildymas (plūdė f, plūdė g)

plūduriuojantis rezultatas;
rezultatas = f + g;
grąžinimo rezultatas;

;
int main ()

DemoPridėti d;
int i1 = 10, i2 = 20, res1;
plūdė f1 = 10.5, f2 = 20.7, res2;
res1 = d.pridėjimas (i1, i2); // bus iškviestas papildymas (int a, int b)
res2 = d.pridėjimas (f1, f2); // bus kviečiamas papildymas (plūdė f, plokščias g)
cout << "Result = " << res1 << endl;
cout << "Result = " << res2 << endl;
grąžinti 0;

5 pavyzdys: Funkcijos perkrova (3)

Šiame pavyzdyje funkcija „add ()“ yra perkrauta, atsižvelgiant į parametrų sąrašo sekos skirtumus. Tai dar vienas būdas perkrauti funkciją C++.

# įtraukti
naudojant vardų sritį std;
klasė „DemoAdd“

vieša:
// Pirmasis funkcijos () funkcijos apibrėžimas
plūdės papildymas (int a, float b)

plūduriuojantis rezultatas;
rezultatas = (plūduriuojantis) a + b;
grąžinimo rezultatas;

// Perkrautos funkcijos pridėjimo () funkcijos apibrėžimas
plūdės papildymas (plūdė a, int b)

plūduriuojantis rezultatas;
rezultatas = a + (plūduriuojantis) b;
grąžinimo rezultatas;

;
int main ()

DemoPridėti d;
int i1 = 10;
plūdė f1 = 10.5, res1, res2;
res1 = d.pridėjimas (i1, f1); // bus iškviestas papildymas (int a, float b)
res2 = d.pridėjimas (f1, i1); // bus iškviestas papildymas (plūdė a, int b)
cout << "Result = " << res1 << endl;
cout << "Result = " << res2 << endl;
grąžinti 0;

Išvada

C ++ yra bendros paskirties ir lanksti programavimo kalba, plačiai naudojama įvairiose srityse. Ši programavimo kalba palaiko tiek kompiliavimo, tiek vykdymo laiko polimorfizmą. Šiame straipsnyje jūs sužinojote, kaip pasiekti kompiliavimo laiko polimorfizmą C ++, naudojant funkcijos perkrovos funkciją. Tai labai naudinga „C ++“ funkcija, kuri padeda programuotojams parašyti skaitomą kodą. Tai taip pat gali būti naudinga rašant daugkartinį kodą.

Žymeklis peršoka arba juda atsitiktinai, kai rašote „Windows 10“
Jei pastebite, kad pelės žymeklis peršoka arba juda pats, automatiškai, atsitiktinai, kai vedate „Windows“ nešiojamąjį kompiuterį ar kompiuterį, kai k...
Kaip pakeisti pelės ir jutiklinių plokščių slinkimo kryptį sistemoje „Windows 10“
Pelė ir Jutiklinė dalisTai ne tik palengvina skaičiavimus, bet ir efektyvesnį bei mažiau laiko reikalaujantį. Mes neįsivaizduojame gyvenimo be šių pri...
Kaip pakeisti pelės žymeklio ir žymeklio dydį, spalvą ir schemą sistemoje „Windows 10“
„Windows 10“ pelės žymeklis ir žymeklis yra labai svarbūs operacinės sistemos aspektai. Tai galima pasakyti ir apie kitas operacines sistemas, taigi, ...