Kuinka toteuttaa operaattorin ylikuormitus c ++: ssa?



Tässä artikkelissa tarkastellaan toista olio-suuntautunutta konseptia, joka tekee käyttäjän käsittelystä helppoa. Opimme operaattorin ylikuormitusta C ++: ssa.

Tässä artikkelissa tutkitaan vielä yksi olio-käsite, joka tekee käyttäjän käsittelystä helppoa. Eli pääsisimme Operaattorin yksityiskohtiin Ylikuormitus C ++ . Seuraavat vihjeet käsitellään tässä artikkelissa,

Joten aloitetaan tämän artikkelin kanssa Operaattorin ylikuormitus C ++: ssa.





Ylikuormitus C ++

Jos luomme kaksi tai useampia saman luokan jäseniä, joilla on sama nimi, mutta erilaiset numerot tai parametrityypit, se tunnetaan nimellä C ++ ylikuormitus.



C ++: ssa voimme ylikuormittaa:

  • menetelmiä
  • rakentajat
  • indeksoidut ominaisuudet

Tämä johtuu siitä, että näillä jäsenillä on vain parametrit.

Jatketaan tämän artikkelin kanssa Operaattorin ylikuormitus C ++: ssa.



Ylikuormitustyypit C ++: ssa

  • Toiminnon ylikuormitus
  • Kuljettajan ylikuormitus

Ylikuormitus - käyttäjän ylikuormitus C ++ - Edureka

mysql-opetus aloittelijoille esimerkkein

Jatketaan tämän artikkelin kanssa Operaattorin ylikuormitus C ++: ssa.

Miksi käyttäjän ylikuormitusta käytetään?

C ++ -ohjelmat voidaan kirjoittaa ilman käyttäjän ylikuormitusta. Myös silloin ohjelmoijat käyttävät käyttäjän operointia syvällisesti ohjelman intuitiivisuuden parantamiseksi. Esimerkiksi,

Voimme korvata koodin kuten:

laskenta = lisää (jaa (a, b), kerro (a, b))

Yhtälölle

laskelma = (a / b) + (a * b)

Operaattorin ylikuormitus tarjoaa yksinkertaisen ja helpon tavan kehittää uusia määritelmiä useimmille C ++ - operaattoreille. Riittävän tiedon avulla voimme melkein luoda uuden oman kielemme käyttämällä toimintoa luovasti ja käyttäjän ylikuormitustekniikoita. Voimme ylikuormittaa kaikkia operaattoreita C ++: ssa seuraavia lukuun ottamatta:
● Laajuusoperaattori (: :)
● Koko-operaattori (Sizeof)
● jäsenvalitsin (.)
● jäsenosoittimen valitsin (*)
● kolmiosainen operaattori (? :)

Käyttäjän ylikuormituksen syntakse

return_type luokan_nimi:: operaattori op (argumentin_lista) {// funktion runko}

Missä palautustyyppi on funktion palauttaman arvon tyyppi. luokan_nimi on luokan nimi.

Jatketaan tämän artikkelin kanssa Operaattorin ylikuormitus C ++: ssa.

Operaattorin ylikuormituksen toteuttaminen C ++: ssa

Käyttäjän toiminnon on oltava joko ei-staattinen (jäsenfunktio) tai ystävätoiminto ylikuormittumiseksi. Operaattorin ylikuormitustoimintoa voidaan käyttää jäsenfunktiossa, jos vasen operandi on kyseisen luokan kohde, mutta jos vasen operandi on erilainen, operaattorin ylikuormitustoiminto on määriteltävä ei-jäsenfunktioksi.
Operaattorin ylikuormitustoiminnosta voidaan tehdä ystävätoiminto, jos se vaatii pääsyn luokan yksityisiin ja suojattuihin jäseniin. Esimerkiksi operaattori op on operaattoritoiminto, jossa op on ylikuormitettu operaattori ja operaattori on avainsana. Kuljettajan ylikuormitus voidaan saavuttaa toteuttamalla toiminto, joka voi olla joko jäsen-, ei-jäsen- tai ystävä-toiminto.

Mikä on ero käyttäjän toimintojen ja normaalien toimintojen välillä?

Käyttäjän toiminnot ovat samat kuin normaalit toiminnot. Ainoa ero on, että operaattoritoiminnon nimi on aina operaattorin avainsana, jota seuraa operaattorin symboli, ja operaattorin toimintoja kutsutaan, kun vastaavaa operaattoria käytetään.

Jatketaan tämän artikkelin kanssa Operaattorin ylikuormitus C ++: ssa.

Ylikuormitusmenetelmien tyypit

Kuljettajan ylikuormitus voidaan tehdä käyttämällä kolmea lähestymistapaa

  • Yksittäisen käyttäjän ylikuormitus.
  • Binaarisen operaattorin ylikuormitus.
  • Binaarioperaattorin ylikuormitus ystävätoiminnolla.

Jatketaan tämän artikkelin kanssa Operaattorin ylikuormitus C ++: ssa.

Unary Operaattorin ylikuormitus

Tarkastellaan unary-operaattoria. Miinusoperaattori, kun sitä käytetään unarina, vaatii vain yhden operandin. Tiedämme, että tämä operaattori muuttaa operandin merkkiä, kun sitä käytetään perustietomuuttujaan. Katsotaanpa, kuinka tämä operaattori ylikuormitetaan, jotta sitä voidaan soveltaa objektiin samalla tavalla kuin int- tai float-muuttujaan. Kohteeseen kohdistetun unaarisen miinuksen tulisi vähentää kaikkia sen tietoeriä.

Esimerkki:

#include nimitilan käyttäminen vakioluokka Korkeus {public: // Jäsenobjektit int jalkaa, tuumaa // Rakentaja alustaa objektin arvon Korkeus (int f, int i) {jalat = f tuuma = i} // Operaattorin ylikuormitus (-) suorita vähennys // Korkeus-objektin toiminta void operator- () {feet-- inch-- cout<< 'Feet & Inches after decrement: ' << feet << ' ' ' << inch <

Tuotos:

Selitys:
Yllä olevassa esimerkissä ylikuormitamme unary-operaattoria suorittamaan vähennyksiä kahdessa korkeusluokan muuttujassa. Välitämme kaksi parametria rakentajalle ja tallennamme niiden arvot jalkoina ja tuumina muuttujina. Sitten määritetään käyttäjän ylikuormitustoiminto (void operator- ()
), jossa kahta muuttujaa vähennetään yhdellä paikalla.
Kun kirjoitamme -h1, se kutsuu käyttäjän ylikuormitustoimintoa ja pienentää konstruktorille välitettyjä arvoja.

Jatketaan tämän artikkelin kanssa Operaattorin ylikuormitus C ++: ssa.

Binaarisen käyttäjän ylikuormitus

Se on kahdella operandilla toimivan käyttäjän ylikuormitus. Otetaan sama esimerkki luokan korkeudesta, mutta lisää tällä kertaa kaksi korkeusobjektia h1 ja h2.

Esimerkki:

menetelmän ylikuormituksen edut Java-tilassa
#include nimitilan käyttäminen vakioluokka Korkeus {julkinen: int jalat, tuuma Korkeus () {jalat = 0 tuuma = 0} Korkeus (int f, int i) {jalat = f tuuma = i} // Ylikuormitus (+) -operaattori // kahden etäisyysobjektin lisäys binäärioperaattorilla Korkeusoperaattori + (Korkeus & d2) // Kutsu viitteellä {// Luo objekti palauttamaan Korkeus h3 // Suorita jalkojen ja tuumien lisäys h3.feet = jalat + d2.feet h3. inch = inch + d2.inch // Palauta tuloksena olevan kohteen palautus h3}} int main () {Korkeus h1 (3, 7) Korkeus h2 (6, 1) Korkeus h3 // Käytä ylikuormitettua operaattoria h3 = h1 + h2 cout<< 'Sum of Feet & Inches: ' << h3.feet << ''' << h3.inch << endl return 0 } 

Tuotos:

Selitys:
Korkeusoperaattori + (korkeus & h2), tässä palauttaa funktion_tyyppi on luokan korkeus, joten se palauttaa luokan Hight objektin h3. Rivillä h3 = h1 + h2 h1 kutsuu luokkiensa operaattoritoiminnon objekteihin ja ottaa parametrin h2, sitten käytämme h3.feet = jalat + d2.feet ja h3.inch = tuuma + d2.tuuma, joka tallentaa muuttujien jalat ja tuuma arvojen summa h3-objektiin liittyvissä muuttujissa.
Kun lause 'h3 = h1 + h2' kutsuu käyttäjän ylikuormitetun funktion, objekti h1 otti vastuun kutsua funktion ja h2 on funktiolle välitetyn argumentin rooli. Yllä oleva kutsulauseke vastaa h3 = h1.operaattori + (h2), joten h2: n datajäseneen pääsee suoraan ja h2: n tietojäseneen (joka välitetään argumenttina) pääsee pisteoperaattorilla.

Kuljettajan ylikuormituksen säännöt

  • Vain nykyiset operaattorit voivat olla ylikuormitettuja ja uusia operaattoreita ei voida ylikuormittaa
  • Ylikuormitetun operaattorin on sisällettävä vähintään yksi käyttäjän määrittelemän tietotyypin operandi.
  • Emme käytä ystävätoimintoa ylikuormittamaan tiettyjä operaattoreita. Jäsentoimintoja voidaan kuitenkin käyttää näiden operaattoreiden ylikuormittamiseen.
  • Kun unary-operaattorit ylikuormittuvat jäsenfunktion kautta, he eivät ota nimenomaisia ​​argumentteja, mutta jos ystävätoiminto on ylikuormitettu, he ottavat yhden argumentin.
  • Kun binaariset operaattorit ylikuormittuvat jäsenfunktion kautta, he ottavat yhden nimenomaisen argumentin, ja jos ne ovat ylikuormitettu ystävätoiminnon kautta, he ottavat kaksi nimenomaista argumenttia.

Siksi olemme päässeet tämän artikkelin 'Operaattorin ylikuormitus C ++: ssa' loppuun. Jos haluat oppia lisää, tutustu luotettavan verkkokoulutusyrityksen Edurekan Java-koulutukseen. Edurekan kurssi on suunniteltu kouluttamaan sinua sekä ydin- että edistyneille Java-konsepteille sekä erilaisille Java-kehyksille, kuten Hibernate & Spring.

Onko sinulla kysymys meille? Mainitse se tämän blogin kommenttiosassa ja otamme sinuun yhteyttä mahdollisimman pian.