Preobremenitev funkcij v jeziku C ++: vse, kar morate vedeti



V tem članku boste našli podrobno in celovito znanje o preobremenitvi funkcij v jeziku C ++ s številnimi primeri, ki jih morate razumeti.

C ++ je eden tistih programskih jezikov, ki je zelo prilagodljiv in zajema tudi več funkcij objektno usmerjenega programiranja. Preobremenitev je še ena značilnost tega programskega jezika.Naslednji kazalci bodo zajeti v tem članku »Preobremenitev funkcij v C ++« -

Preobremenitev C ++

Ko ustvarimo dva ali več članov razreda z istim imenom, vendar različnim po številu ali vrsti parametrov, je to znano kot preobremenitev C ++. V C ++ lahko preobremenimo:





  • metode,
  • konstruktorji in
  • indeksirane lastnosti

Vrste preobremenitve v C ++

types-of-overloading-in-c++

Kaj je preobremenitev funkcije v C ++?

Preobremenitev funkcij v jeziku C ++ lahko definiramo kot postopek, ki ima dve ali več funkcij člana razreda z istim imenom, vendar različnih parametrov. Pri preobremenitvi funkcije lahko funkcijo na novo definiramo bodisi z uporabo različnih vrst argumentov bodisi z različnim številom argumentov v skladu z zahtevo. Šele prek teh razlik lahko prevajalnik razlikuje med obema preobremenjenima funkcijama.



Ena glavnih prednosti preobremenitve funkcije je, da poveča berljivost programa, ker nam za isto dejanje ni treba vedno znova uporabljati različnih imen.

S spreminjanjem števila argumentov

Na ta način preobremenitve funkcije definiramo dve funkciji z enakimi imeni, vendar različnim številom parametrov istega tipa. Na primer, v spodaj omenjenem programu smo naredili dve funkciji add () za vrnitev vsote dveh in treh celih števil.

// prva definicija funkcije int add (int a, int b) {cout<< a+b } // second overloaded function definition int add(int a, int b, int c) { cout << a+b+c }

Tu naj bi bila funkcija add () preobremenjena, saj ima dve definiciji, eno, ki sprejme dva argumenta, in drugo, ki sprejme tri argumente. Katera funkcija add () bo poklicana, je odvisno od števila argumentov.



int main () {add (10, 20) // add () z 2 parametrom se bo imenoval add (10, 20, 30) // pozval se bo sum () s 3 parametrom}
#include z uporabo imenskega prostora std int add (int a, int b) {cout<< a+b <

V zgornjem primeru funkcijo add () preobremenimo s spreminjanjem njenega števila argumentov. Najprej določimo funkcijo add () z dvema parametroma, nato pa jo preobremenimo tako, da ponovno določimo funkcijo add (), tokrat pa s tremi parametri.

Z različnimi vrstami argumentov

V tej metodi definiramo dve ali več funkcij z istim imenom in enakim številom parametrov, vendar se podatkovni tip, uporabljen za te parametre, razlikuje. V tem programu imamo na primer tri funkcije add (), prvi dobi dva celoštevilčna argumenta, drugi dva plavajoča argumenta in tretji dva dvojna argumenta.

#include z uporabo imenskega prostora std int add (int x, int y) // prva definicija {cout<< x+y << endl return 0 } float add(float a, float b) { cout << a+b << endl return 0 } double add(double x, double y) { cout << x+y << endl return 0 } int main() { add(20, 40) add(23.45f, 34.5f) add(40.24, 20.433) }

V zgornjem primeru funkcijo add () definiramo trikrat. Prvič uporabite celo število kot parametre, drugič uporabite float kot parametre in tretji uporabite dvojno kot parameter.
Tako dvakrat preglasimo funkcijo add ().

Prednosti preobremenitve funkcije v C ++

  • Preobremenitev funkcij uporabljamo za prihranek prostora v pomnilniku, doslednosti in berljivosti našega programa.

  • S konceptom preobremenitve funkcije uporabe lahko razvijemo več funkcij z istim imenom

  • Preobremenitev funkcije prikazuje vedenje polimorfizma, ki nam omogoča različno vedenje, čeprav bo obstajala neka povezava z istim imenom funkcije.

  • Preobremenitev funkcije pospeši izvajanje programa.

    kako združiti podatke v tabeli
  • Preobremenitev funkcije se uporablja za ponovno uporabo kode in tudi za prihranek pomnilnika.

  • Aplikaciji pomaga pri nalaganju metode razreda glede na vrsto parametra.

  • Vzdrževanje kode je enostavno.

Slabosti preobremenitve funkcije v C ++

  • Deklaracij funkcij, ki se razlikujejo le po vrsti vrnitve, ni mogoče preobremeniti s postopkom preobremenitve funkcije.
  • Izjav funkcije člana z enakimi parametri ali istimi imeni ni mogoče preobremeniti, če je katera od njih deklarirana kot statična funkcija člana.
  • razred XYZ {statična void func () void func () // napaka}

Preobremenitev funkcije in dvoumnost

Ko se prevajalnik med preobremenjenimi funkcijami ne more odločiti, katero funkcijo naj najprej prikliče, je ta situacija znana kot dvoumnost preobremenitve funkcije. Prevajalnik ne zažene programa, če pokaže napako dvoumnosti. Vzroki dvoumnosti preobremenitve funkcij:

  • Pretvorba tipa.
  • Funkcija s privzetimi argumenti.
  • Funkcija s prenosom reference

Pretvorba vrste:

#include z uporabo imenskega prostora std void function (float) void function (int) void function (float x) {std :: cout<< 'Value of x is : ' <

Zgornji primer vrže napako - »klic preobremenjene funkcije (dvojno)« je dvoumen «. Funkcija (3.4) pokliče prvo funkcijo. Funkcija (34) pokliče drugo funkcijo v skladu z našo napovedjo. Toda to se ne zgodi, ker so v C ++ vse konstante s plavajočo vejico obravnavane kot dvojne in ne kot float. Če spremenljivko float zamenjamo z dvojno spremenljivko, bo program deloval v redu. Zato temu rečemo napaka pretvorbe tipa iz float v double.

Funkcija s privzetimi argumenti:

#include z uporabo imenskega prostora std void function (int) void function (int, int) void function (int x) {std :: cout<< 'Value of x is : ' <

Zgornji primer daje napako, ki pravi, da je 'klic preobremenjene' zabave (int) 'dvoumen', ker je funkcijo (int y, int z = 12) mogoče poklicati na dva načina:

  1. S klicem funkcije z enim argumentom (in samodejno bo sprejela vrednost z = 12)
  2. S klicem funkcije z dvema argumentoma.

Ko prikličemo funkcijo: function (12), v celoti izpolnimo pogoj funkcije (int) in funkcije (int, int), tako da prevajalnik zaide v dvoumnost in pokaže napako.

Funkcija s prenosom prek reference

razčlenjevanje datotek xml v javi
#include z uporabo imenskega prostora std void function (int) void function (int &) void function (int a) {std :: cout<< 'Value of a is : ' < 

Zgornji program daje napako, ko pravi, da je 'klic preobremenjene' zabave (int &) 'dvoumen'. Kot vidimo, prva funkcija sprejme en celoštevilski argument, druga pa kot argument referenčni parameter. V tem primeru prevajalnik ne more razumeti, katero funkcijo uporabnik potrebuje, saj med zabavo (int) in zabavo (int &) ni sintaktične razlike, zato sproži napako dvoumnosti.

S tem smo prišli do konca tega preobremenjevanja funkcij v jeziku C ++. Če želite izvedeti več, si oglejte Edureka, zaupanja vredno podjetje za spletno učenje. Edurekin tečaj za usposabljanje in certificiranje Java J2EE in SOA je zasnovan tako, da vas usposobi za temeljne in napredne koncepte Java, skupaj z različnimi Java okviri, kot sta Hibernate & Spring.

Imate vprašanje za nas? Prosimo, navedite to v oddelku za komentarje tega spletnega dnevnika, mi se vam bomo oglasili v najkrajšem možnem času.