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,
- Ylikuormitus C ++
- Ylikuormitustyypit C ++: ssa
- Miksi käyttäjän ylikuormitusta käytetään?
- Operaattorin ylikuormituksen toteuttaminen C ++: ssa
- Ylikuormitusmenetelmien tyypit
- Unary-operaattoreiden ylikuormitus
- Binaaristen operaattoreiden ylikuormitus
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
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.