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:
- Parameetrite arv võib olla erinev
- Parameetrite andmetüüp võib olla erinev
- Parameetrite järjestus võib olla erinev
Funktsiooni ülekoormuse korral ei arvestata tagastusväärtust.
Järgmised funktsioonid on ülekoormatud:
- int liitmine (int a, int b)
- ujukliide (ujuk f, gloat g)
- ujuki liitmine (ujuk f, int i)
- ujukliide (int i, ujuk f)
- int liitmine (int a, int b, int c)
- 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):
- int liitmine (int a, int b)
- 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:
- Näide 1: lihtne funktsioon
- Näide 2: lihtne liitmisfunktsioon
- Näide 3: Funktsiooni ülekoormus (1)
- Näide 4: funktsiooni ülekoormus (2)
- 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 () ”.
# kaasatanimeruumi 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.
# kaasatanimeruumi 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.
# kaasatanimeruumi 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.
# kaasatanimeruumi 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++.
# kaasatanimeruumi 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.