C ++

Preopterećenje funkcije C ++

Preopterećenje funkcije C ++

C ++ je fleksibilni programski jezik opće namjene. Ovaj programski jezik izvorno je stvorio Bjarne Stroustrup, danski informatičar, davne 1985. godine. C ++ podržava polimorfizam, nasljeđivanje i još mnogo toga. Ovaj članak pokriva preopterećenje funkcije kako bi se postigao polimorfizam vremena kompajliranja u programskom jeziku C ++.

Što je funkcija?

Funkcija nije ništa drugo nego određeni dio koda koji izvršava određeni zadatak na temelju danih ulaza i korisniku vraća tražene rezultate u obliku izlaza. Funkcije se koriste za uklanjanje ponavljajućeg koda u velikim bazama kodova.

Nakon definiranja funkcije, kasnije je možete ponovno upotrijebiti, bilo u istom programu ili u drugom programu.

Sintaksa funkcije

Funkcija na C ++ ima sljedeću sintaksu:

returnType functionName (parametar_list)

..
..
povratak return_value;

ReturnType, parametar_list i return naredba nisu obavezni. Funkcija u C ++ može vratiti najviše jednu vrijednost. Ako funkcija ne vrati nijednu vrijednost, returnType treba definirati kao void.

Što je preopterećenje funkcije?

U C ++-u višestruke definicije funkcija mogu imati isti naziv funkcije, ali s različitim parametrima. To se naziva preopterećenjem funkcije. Uz pomoć značajke preopterećenja funkcije, u C se može postići polimorfizam vremena kompajliranja++.

Funkcije se mogu preopteretiti na sljedeće načine:

  1. Broj parametara može biti različit
  2. Vrsta podataka parametara može biti različita
  3. Slijed parametara može biti različit

Međutim, povratna vrijednost se ne uzima u obzir za preopterećenje funkcije. 

Sljedeće su funkcije preopterećene:

  1. int dodatak (int a, int b)
  2. dodatak plovka (plovak f, gloat g)
  3. dodavanje plutajućeg slova (float f, int i)
  4. dodavanje plutajućeg slova (int i, float f)
  5. int dodatak (int a, int b, int c)
  6. dodatak plutajućeg slova (plutajući f, plutajući g, plutajući h)

Kao što vidite, uz pomoć značajke preopterećenja funkcije u C ++-u može postojati više definicija / funkcionalnosti s istim imenom funkcije i u istom opsegu.

Bez značajke preopterećenja funkcije, trebali biste napisati zasebnu funkciju [na primjer, add_1 (), add_2 () itd.) Za svaku varijaciju. Na primjer, možda ćete morati napisati add_1 () da biste dodali dvije cijele brojeve, add_2 () da biste dodali dva plutajuća slova i tako dalje. Međutim, kao što vidite gore, značajka preopterećenja funkcije može se koristiti za definiranje više varijacija funkcije “addition ()”, a da se pri tome zadržava isti naziv funkcije.

Sljedeće se funkcije ne smatraju preopterećenima jer je jedina razlika između ove dvije vrste povrat (tip povrata ne uzima se u obzir za preopterećenje funkcija u C ++):

  1. int dodatak (int a, int b)
  2. dodavanje plutajućeg slova (int a, int b)

Primjeri

Sad kad razumijete koncept preopterećenja funkcija, proći ćemo kroz nekoliko radnih primjera programa kako bismo jasnije razumjeli ovaj koncept. Obuhvatit ćemo sljedeće primjere:

  1. Primjer 1: Jednostavna funkcija
  2. Primjer 2: Jednostavna funkcija sabiranja
  3. Primjer 3: Preopterećenje funkcije (1)
  4. Primjer 4: Preopterećenje funkcije (2)
  5. Primjer 5: Preopterećenje funkcije (3)

Prva dva primjera objašnjavaju kako normalne funkcije rade u C ++, dok zadnja tri primjera pokazuju značajku preopterećenja funkcije u C-u++.

Primjer 1: Jednostavna funkcija

U ovom ćemo primjeru pokazati kako se jednostavna funkcija može definirati i pozvati u C++. Definirat ćemo klasu koja se naziva "Display" i javnu funkciju koja se naziva "display ().”Iz funkcije“ main () ”pozvat ćemo funkciju“ display () ”uz pomoć objekta klase“ Display ”(d).

#include
pomoću prostora imena std;
razred Prikaz

javnost:
prikaz praznine ()

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

;
int main ()

Prikaz d;
d.prikaz();
return 0;

Primjer 2: Jednostavna funkcija sabiranja

U ovom primjeru pokazat ćemo kako definirati jednostavnu funkciju "dodavanje ()" u jeziku C++. Definirat ćemo klasu pod nazivom "DemoAdd" i javnu funkciju koja se zove "add ().”Iz funkcije“ main () ”pozvat ćemo funkciju“ add () ”uz pomoć objekta klase“ DemoAdd ”(d).

U ovom primjeru, trenutna implementacija funkcije “addition ()” prihvaća samo dva cjelobrojna parametra. To znači da je trenutna funkcija "zbrajanje ()" sposobna dodati samo dvije cijele brojeve.

Da biste dodali tri cijele brojeve umjesto dvije, može se definirati funkcija s drugim imenom, poput "add_1 ()". U C ++-u se funkcija može preopteretiti, što znači da se može definirati druga definicija funkcije "dodavanje ()" koja dodaje tri cijele brojeve i zadržava isto ime, tj.e., "dodatak().”U sljedećem ćemo primjeru pogledati kako preopteretiti funkciju„ add () “.

#include
pomoću prostora imena std;
razred DemoAdd

javnost:
int dodatak (int a, int b)

int rezultat;
rezultat = a + b;
povratni rezultat;

;
int main ()

DemoAdd d;
int i1 = 10, i2 = 20, res;
res = d.zbrajanje (i1, i2);
cout << "Result = " << res << endl;
return 0;

Primjer 3: Preopterećenje funkcije (1)

U prethodnom smo primjeru definirali funkciju “zbrajanje ()” kako bismo dodali dvije cijele vrijednosti i vratili izračunati rezultat. Sada ćemo u ovom primjeru preopteretiti funkciju “add ()” kako bismo dodali tri cijele brojeve. Dakle, moći ćemo pozvati funkciju "dodavanje ()" s dva cjelobrojna argumenta, kao i tri cjelobrojna argumenta.

Bez značajke preopterećenja funkcije, morali bismo napisati drugu funkciju s drugim imenom.

#include
pomoću prostora imena std;
razred DemoAdd

javnost:
// Prva definicija funkcije dodavanja ()
int dodatak (int a, int b)

int rezultat;
rezultat = a + b;
povratni rezultat;

// Preopterećena verzija funkcije add ()
int dodatak (int a, int b, int c)

int rezultat;
rezultat = a + b + c;
povratni rezultat;

;
int main ()

DemoAdd d;
int i1 = 10, i2 = 20, i3 = 30, res1, res2;
res1 = d.zbrajanje (i1, i2); // dodavanje () s 2 parametra
res2 = d.zbrajanje (i1, i2, i3); // dodavanje () s 3 parametra
cout << "Result = " << res1 << endl;
cout << "Result = " << res2 << endl;
return 0;

Primjer 4: Preopterećenje funkcije (2)

U ranijim odjeljcima ovog članka saznali ste da se preopterećenje funkcije može izvesti na temelju razlika u tipu parametra. Ovdje smo preopteretili funkciju “add ()” na temelju tipa podataka parametra. U prvoj verziji funkcije zbrajanja, dodat ćemo dvije varijable cijelog broja; a u drugoj ćemo verziji dodati dvije varijable tipa float.

#include
pomoću prostora imena std;
razred DemoAdd

javnost:
// Prva definicija sabiranja ()
int dodatak (int a, int b)

int rezultat;
rezultat = a + b;
povratni rezultat;

// Definicija preopterećene funkcije
dodatak plovka (plovak f, plovak g)

rezultat plutanja;
rezultat = f + g;
povratni rezultat;

;
int main ()

DemoAdd d;
int i1 = 10, i2 = 20, res1;
plovak f1 = 10.5, f2 = 20.7, res2;
res1 = d.zbrajanje (i1, i2); // zvat će se dodavanje (int a, int b)
res2 = d.zbrajanje (f1, f2); // zvat će se dodavanje (float f, flat g)
cout << "Result = " << res1 << endl;
cout << "Result = " << res2 << endl;
return 0;

Primjer 5: Preopterećenje funkcije (3)

U ovom je primjeru funkcija „add ()“ preopterećena na temelju razlika u slijedu popisa parametara. Ovo je još jedan način preopterećenja funkcije u C-u++.

#include
pomoću prostora imena std;
razred DemoAdd

javnost:
// Prva definicija funkcije dodavanja () funkcije
dodavanje plutajućeg slova (int a, plutajuće b)

rezultat plutanja;
rezultat = (plutajuće) a + b;
povratni rezultat;

// Preopterećena definicija funkcije dodavanja () funkcije
dodavanje plutajućeg slova (float a, int b)

rezultat plutanja;
rezultat = a + (plutajuće) b;
povratni rezultat;

;
int main ()

DemoAdd d;
int i1 = 10;
plovak f1 = 10.5, res1, res2;
res1 = d.zbrajanje (i1, f1); // zvat će se dodavanje (int a, float b)
res2 = d.zbrajanje (f1, i1); // zvat će se dodavanje (float a, int b)
cout << "Result = " << res1 << endl;
cout << "Result = " << res2 << endl;
return 0;

Zaključak

C ++ je općeniti i fleksibilni programski jezik koji se široko koristi u raznim domenama. Ovaj programski jezik podržava polimorfizam vremena kompajliranja i vremena izvođenja. U ovom ste članku naučili kako postići polimorfizam vremena prevođenja u C ++ pomoću značajke preopterećenja funkcije. Ovo je vrlo korisna značajka na C ++-u koja programerima pomaže u pisanju čitljivog koda. Također može biti korisno za pisanje koda za višekratnu upotrebu.

SuperTuxKart za Linux
SuperTuxKart sjajan je naslov osmišljen kako bi vam besplatno pružio iskustvo Mario Kart na vašem Linux sustavu. Prilično je izazovno i zabavno igrati...
Vodič za bitku za Wesnoth
Bitka za Wesnoth jedna je od najpopularnijih strateških igara otvorenog koda koje trenutno možete igrati. Ne samo da se ova igra razvija već jako dugo...
0 A.D. Vodič
Od mnogih strateških igara tamo, 0 A.D. uspijeva se istaknuti kao sveobuhvatan naslov i vrlo duboka, taktička igra unatoč tome što je otvoren izvor. R...