C ++

C ++ Funktsioon Ülekoormus

C ++ Funktsioon Ülekoormus

C ++ on paindlik üldotstarbeline programmeerimiskeel. Selle programmeerimiskeele lõi algselt Taani arvutiteadlane Bjarne Stroustrup juba 1985. aastal. C ++ toetab polümorfismi, pärimist ja muud. See artikkel käsitleb funktsioonide ülekoormamist kompileerimisaja polümorfismi saavutamiseks programmeerimiskeeles C ++.

Mis on funktsioon?

Funktsioon pole midagi muud kui konkreetne koodijupp, mis täidab konkreetse ülesande pakutavate sisendite põhjal, ja tagastab soovitud tulemused kasutajale väljundina. Funktsioonide abil eemaldatakse korduv kood suurtes koodibaasides.

Pärast funktsiooni määratlemist saate seda hiljem uuesti kasutada kas samas või mõnes teises programmis.

Funktsiooni süntaks

Funktsioonis C ++ on järgmine süntaks:

returnType functionName (parameetri_loend)



return return_value;

ReturnType, parametri_list ja return-lause on valikulised. Funktsioonis C ++ saab tagastada maksimaalselt ühe väärtuse. Kui funktsioon ei tagasta ühtegi väärtust, tuleks returnType määratleda tühisena.

Mis on funktsiooni ülekoormamine?

Rakenduses C ++ võivad mitmel funktsiooni definitsioonil olla sama funktsiooni nimi, kuid erinevate parameetritega. Seda nimetatakse funktsiooni ülekoormamiseks. Funktsiooni ülekoormamise funktsiooni abil on C-s võimalik saavutada kompileerimisaegne polümorfism++.

Funktsioone saab üle koormata järgmistel viisidel:

  1. Parameetrite arv võib olla erinev
  2. Parameetrite andmetüüp võib olla erinev
  3. Parameetrite järjestus võib olla erinev

Funktsiooni ülekoormuse korral ei arvestata tagastusväärtust. 

Järgmised funktsioonid on ülekoormatud:

  1. int liitmine (int a, int b)
  2. ujukliide (ujuk f, gloat g)
  3. ujuki liitmine (ujuk f, int i)
  4. ujukliide (int i, ujuk f)
  5. int liitmine (int a, int b, int c)
  6. ujukliide (ujuk f, ujuk g, ujuk h)

Nagu näete, võib funktsiooni C ++ funktsioonide ülekoormamise funktsiooni abil olla mitu definitsiooni / funktsionaalsust sama funktsiooni nimega ja samas ulatuses.

Ilma funktsiooni ülekoormusfunktsioonita peate iga variatsiooni jaoks kirjutama eraldi funktsiooni [näiteks liitmine_1 (), liitmine_2 () jne]. Näiteks peate kahe täisarvu lisamiseks kirjutama liitmine_1 (), kahe ujuki lisamiseks liit_2 () ja nii edasi. Kuid nagu ülal näete, saab funktsiooni ülekoormamise funktsiooni kasutada funktsiooni “addition ()” mitme variatsiooni määratlemiseks, säilitades siiski sama funktsiooni nime.

Järgmisi funktsioone ei loeta ülekoormatuks, kuna nende kahe ainus erinevus on tagastustüüp (tagastuse tüüpi ei arvestata funktsiooni ülekoormamise korral C ++ keeles):

  1. int liitmine (int a, int b)
  2. ujukliide (int a, int b)

Näited

Nüüd, kui mõistate funktsioonide ülekoormamise mõistet, läbime selle mõiste selgemaks mõistmiseks paar töötavat näidisprogrammi. Käsitleme järgmisi näiteid:

  1. Näide 1: lihtne funktsioon
  2. Näide 2: lihtne liitmisfunktsioon
  3. Näide 3: Funktsiooni ülekoormus (1)
  4. Näide 4: funktsiooni ülekoormus (2)
  5. Näide 5: funktsiooni ülekoormus (3)

Esimesed kaks näidet selgitavad, kuidas normaalsed funktsioonid toimivad C ++ versioonis, kolm viimast näidet aga funktsioonide ülekoormamise funktsiooni C-s++.

Näide 1: lihtne funktsioon

Selles näites demonstreerime, kuidas saab lihtsat funktsiooni C-s defineerida ja kutsuda++. Määratleme klassi nimega "Kuva" ja avaliku funktsiooni nimega "kuva" (.”Funktsioonist“ main () ”helistame klassi display objekti (d) abil funktsiooni“ display () ”.

# kaasata
nimeruumi kasutamine std;
klassi väljapanek

avalik:
tühine kuva ()

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

;
int main ()

Kuva d;
d.kuva ();
tagastama 0;

Näide 2: lihtne liitmisfunktsioon

Selles näites demonstreerime, kuidas defineerida lihtne funktsioon C (liitmine)++. Määratleme klassi nimega “DemoAdd” ja avaliku funktsiooni nimega “lisaks ().”Funktsioonist“ main () ”helistame klassiobjekti“ DemoAdd ”(d) abil funktsiooni“ add () ”.

Selles näites aktsepteerib funktsiooni „addit ()” praegune rakendamine ainult kahte täisarvuparameetrit. See tähendab, et praegune funktsioon “add ()” on võimeline lisama ainult kahte täisarvu.

Kolme täisarvu lisamiseks kahe asemel saab määratleda erineva nimega funktsiooni, näiteks „lisaks_1 ()”. Funktsioonis C ++ saab funktsiooni üle koormata, mis tähendab, et funktsiooni “addition ()” teise määratluse saab määratleda kolme täisarvu lisamiseks ja sama nime säilitamiseks, st.e., „Lisamine ().”Järgmises näites uurime, kuidas funktsiooni“ add () ”üle koormata.

# kaasata
nimeruumi kasutamine std;
klass DemoAdd

avalik:
int liitmine (int a, int b)

int tulemus;
tulemus = a + b;
tagastustulemus;

;
int main ()

DemoLisa d;
int i1 = 10, i2 = 20, res;
res = d.liitmine (i1, i2);
cout << "Result = " << res << endl;
tagastama 0;

Näide 3: Funktsiooni ülekoormus (1)

Eelmises näites määratlesime funktsiooni “addition ()” kahe täisarvu lisamiseks ja arvutatud tulemuse tagastamiseks. Selles näites laadime kolme täisarvu lisamiseks üle funktsiooni “add ()”. Niisiis saame funktsiooni “add ()” kutsuda kahe täisarvu ja kolme täisarvu argumendiga.

Ilma funktsiooni ülekoormamise funktsioonita peaksime kirjutama teise funktsiooni teise nimega.

# kaasata
nimeruumi kasutamine std;
klass DemoAdd

avalik:
// Liitmise esimese funktsiooni määratlus ()
int liitmine (int a, int b)

int tulemus;
tulemus = a + b;
tagastustulemus;

// Funktsiooni Add () ülekoormatud versioon
int liitmine (int a, int b, int c)

int tulemus;
tulemus = a + b + c;
tagastustulemus;

;
int main ()

DemoLisa d;
int i1 = 10, i2 = 20, i3 = 30, res1, res2;
res1 = d.liitmine (i1, i2); // 2 parameetriga liitmine ()
res2 = d.liitmine (i1, i2, i3); // 3 parameetriga liitmine ()
cout << "Result = " << res1 << endl;
cout << "Result = " << res2 << endl;
tagastama 0;

Näide 4: funktsiooni ülekoormus (2)

Selle artikli varasemates jaotistes õppisite, et funktsioonide ülekoormamist saab teha parameetrite tüübi erinevuste põhjal. Siin oleme parameetri andmetüübile tuginedes funktsiooni “addition ()” üle koormanud. Lisamisfunktsiooni esimeses versioonis lisame kaks täisarvu muutujat; ja teises versioonis lisame kaks ujuki tüüpi muutujat.

# kaasata
nimeruumi kasutamine std;
klass DemoAdd

avalik:
// Lisamise esimene määratlus ()
int liitmine (int a, int b)

int tulemus;
tulemus = a + b;
tagastustulemus;

// Ülekoormatud funktsiooni määratlus
ujukliide (ujuk f, ujuk g)

ujukitulemus;
tulemus = f + g;
tagastustulemus;

;
int main ()

DemoLisa d;
int i1 = 10, i2 = 20, res1;
ujuk f1 = 10.5, f2 = 20.7, res2;
res1 = d.liitmine (i1, i2); // kutsutakse liitmist (int a, int b)
res2 = d.liitmine (f1, f2); // kutsutakse liitmine (float f, flat g)
cout << "Result = " << res1 << endl;
cout << "Result = " << res2 << endl;
tagastama 0;

Näide 5: funktsiooni ülekoormus (3)

Selles näites on funktsioon “add ()” üle koormatud, lähtudes parameetrite loendi järjestuse erinevustest. See on veel üks viis funktsiooni C-s ülekoormamiseks++.

# kaasata
nimeruumi kasutamine std;
klass DemoAdd

avalik:
// Funktsiooni Add () esimese funktsiooni määratlus
ujukliide (int a, ujuk b)

ujukitulemus;
tulemus = (ujuk) a + b;
tagastustulemus;

// Funktsiooni Add () ülekoormatud funktsiooni määratlus
ujukliide (ujuk a, int b)

ujukitulemus;
tulemus = a + (ujuk) b;
tagastustulemus;

;
int main ()

DemoLisa d;
int i1 = 10;
ujuk f1 = 10.5, res1, res2;
res1 = d.liitmine (i1, f1); // kutsutakse liitmine (int a, float b)
res2 = d.liitmine (f1, i1); // kutsutakse liitmine (ujuk a, int b)
cout << "Result = " << res1 << endl;
cout << "Result = " << res2 << endl;
tagastama 0;

Järeldus

C ++ on üldotstarbeline ja paindlik programmeerimiskeel, mida kasutatakse laialdaselt erinevates valdkondades. See programmeerimiskeel toetab nii kompileerimis- kui ka tööaja polümorfismi. Selles artiklis õppisite funktsiooni ülekoormamise funktsiooni abil kompileerimisaja polümorfismi C ++ versioonis saavutama. See on C ++ -s väga kasulik funktsioon, mis aitab programmeerijatel kirjutada loetavat koodi. Sellest võib abi olla ka korduvkasutatava koodi kirjutamisel.

Hiire keskmine nupp ei tööta Windows 10-s
The hiire keskmine nupp aitab teil sirvida pikki rohke andmega veebisaite ja ekraane. Kui see peatub, siis lõpuks kasutate kerimiseks klaviatuuri, mis...
Kuidas muuta hiire vasakut ja paremat nuppu Windows 10 PC-s
On üsna tavaline, et kõik arvutihiirte seadmed on ergonoomiliselt mõeldud parempoolsete kasutajate jaoks. Kuid on olemas hiire seadmeid, mis on spetsi...
Jäljendage hiireklikke, hõljutades hiirega klõpsutut hiirt Windows 10-s
Hiire või klaviatuuri kasutamine liigses kasutamises vales asendis võib põhjustada palju terviseprobleeme, sealhulgas tüve, karpaalkanali sündroom ja ...