Kuidas rakendada operaatori ülekoormust c ++ versioonis?



Selles artiklis vaatleme veel üht objektorienteeritud kontseptsiooni, mis muudab operaatori käsitsemise lihtsaks. Me õpiksime operaatori ülekoormamist C ++ keeles.

Selles artiklis uurime veel ühte objektorienteeritud kontseptsiooni, mis muudab operaatori käsitsemise lihtsaks. See on see, et me läheme Operaatori üksikasjadesse Ülekoormus C ++ . Järgmisi näpunäiteid käsitletakse selles artiklis,

Niisiis, alustame selle artikliga operaatori ülekoormamise kohta C ++ -s.





Ülekoormus C ++

Kui loome kaks või enam sama klassi liiget, kellel on sama nimi, kuid mis erinevad parameetrite arvu või tüübi poolest, on see tuntud kui C ++ ülekoormus.



C ++ versioonis võime üle koormata:

  • meetodid
  • konstruktorid
  • indekseeritud omadused

Sellepärast, et nendel liikmetel on ainult parameetrid.

Selle artikliga liikumine edasi operaatori ülekoormamise kohta C ++ keeles.



Ülekoormuse tüübid C ++ keeles

  • Funktsiooni ülekoormus
  • Operaatori ülekoormus

Ülekoormus - operaatori ülekoormus C ++ - Edureka

Selle artikliga liikumine edasi operaatori ülekoormamise kohta C ++ keeles.

lingitud loend c-programmis

Miks kasutatakse operaatori ülekoormust?

C ++ programme saab kirjutada operaatori ülekoormamise teadmata. Ka programmeerijad kasutavad operaatorit, kes töötab, programmi intuitiivseks muutmiseks. Näiteks,

Saame koodi asendada järgmiselt:

arvutus = lisama (jagama (a, b), korrutama (a, b))

Võrduse jaoks

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

Operaatori ülekoormamine pakub enamiku C ++ operaatorite jaoks lihtsat ja lihtsat viisi uute määratluste väljatöötamiseks. Piisavate teadmiste olemasolul võime funktsiooni loomingulise kasutamise ja operaatori ülekoormustehnika abil peaaegu uue oma keele luua. Saame kõiki C ++ operaatoreid üle koormata, välja arvatud järgmised:
● Reguleerimisala operaator (: :)
● Suuruse operaator (Sizeof)
● liikme valija (.)
● liikme osuti valija (*)
● kolmepoolne operaator (? :)

Operaatori ülekoormuse süntaks

õppimine ssis samm-sammult
return_type klassi_nimi:: operaator op (argument_loend) {// funktsiooni keha}

Kus tagastuse tüüp on funktsiooni tagastatud väärtuse tüüp. klassi_nimi on klassi nimi.

Selle artikliga liikumine edasi operaatori ülekoormamise kohta C ++ keeles.

Operaatori ülekoormuse rakendamine C ++ keeles

Operaatori funktsioon peab ülekoormuse saamiseks olema kas mittestaatiline (liikme funktsioon) või sõbra funktsioon. Operaatori ülekoormusfunktsiooni saab rakendada liikmefunktsioonile, kui vasak operand on selle klassi objekt, kuid kui vasak operand on erinev, siis tuleb operaatori ülekoormusfunktsioon määratleda mitte-liikme funktsioonina.
Operaatori ülekoormusfunktsioonist saab teha sõbrafunktsiooni, kui see nõuab juurdepääsu klassi privaatsetele ja kaitstud liikmetele. Näiteks operaator op on operaatori funktsioon, kus op on operaator üle koormatud ja operaator on märksõna. Operaatori ülekoormuse saab saavutada funktsiooni rakendamisega, mis võib olla kas liikme funktsioon, mitte liikme funktsioon või sõbra funktsioon.

Mis vahe on operaatori ja tavaliste funktsioonide vahel?

Operaatori funktsioonid on samad mis tavalistel funktsioonidel. Ainus erinevus on see, et operaatorifunktsiooni nimi on alati operaatori märksõna, millele järgneb operaatori sümbol ja vastava operaatori kasutamisel kutsutakse operaatori funktsioone.

Selle artikliga liikumine edasi operaatori ülekoormamise kohta C ++ keeles.

Ülekoormuse lähenemisviiside tüübid

Operaatori ülekoormamist saab teha kolme lähenemisviisi abil

  • Unaarse operaatori ülekoormamine.
  • Binaaroperaatori ülekoormamine.
  • Binaaroperaatori ülekoormamine sõbrafunktsiooni abil.

Selle artikliga liikumine edasi operaatori ülekoormamise kohta C ++ keeles.

Unary Operaatori ülekoormamine

Vaatleme unaarset operaatorit - -. Miinusoperaator, kui seda kasutatakse unaarina, nõuab ainult ühte operandi. Me teame, et see operaator muudab põhiandmete muutujale rakendamisel operandi märki. Vaatame, kuidas seda operaatorit üle koormata, et seda saaks objektile rakendada samamoodi nagu int- või ujukmuutujale. Objektile rakendatud unaarne miinus peaks vähendama kõiki selle andmeühikuid.

Näide:

#include nimeruumi standardklassiga Kõrgus {public: // Member Objects int jalad, tolli // Konstruktor objekti väärtuse initsialiseerimiseks Kõrgus (int f, int i) {feet = f toll = i} // Operaatori ülekoormamine (-) teostama kahanemist // objekti Kõrgus toimimine tühine operaator- () {jalad - tolli - cout<< 'Feet & Inches after decrement: ' << feet << ' ' ' << inch <

Väljund:

kuidas kasutada spyder pythonit

Selgitus:
Ülaltoodud näites koormame unary-operaatorit „Height” klassi kahes muutujas kahanemisele. Edastame konstruktorile kaks parameetrit ja salvestame nende väärtused muutujana jalad ja tollid. Seejärel määratleme operaatori ülekoormusfunktsiooni (void operator- ()
), milles kahte muutujat vähendatakse ühe positsiooni võrra.
Kui kirjutame -h1, kutsub see operaatori ülekoormusfunktsiooni ja vähendab konstruktorile edastatud väärtusi.

Selle artikliga liikumine edasi operaatori ülekoormamise kohta C ++ keeles.

Binaaroperaatori ülekoormamine

See on kahel operandil töötava operaatori ülekoormus. Võtame sama klassi klassi kõrguse näite, kuid seekord lisage kaks kõrguse objekti h1 ja h2.

Näide:

#include kasutades nimeruumi standardklass Kõrgus {public: int jalad, tolli Kõrgus () {jalad = 0 tolli = 0} Kõrgus (int f, int i) {jalad = f toll = i} // Ülekoormuse (+) operaator kahe kaugusobjekti lisamine binaaroperaatori abil Kõrgusoperaator + (Kõrgus & d2) // Kõne viitega {// Loo objekt tagastamiseks Kõrgus h3 // Tee jalgade ja tollide liitmine h3.feet = jalad + d2.feet h3. toll = toll + d2. tolli // Saadud objekti tagastamine h3}} int main () {Kõrgus h1 (3, 7) Kõrgus h2 (6, 1) Kõrgus h3 // Kasutage ülekoormatud operaatorit h3 = h1 + h2 cout<< 'Sum of Feet & Inches: ' << h3.feet << ''' << h3.inch << endl return 0 } 

Väljund:

Selgitus:
Kõrgusoperaator + (Kõrgus & h2), siin tagastatakse funktsiooni_tüüp klass Kõrgus, seega tagastatakse klassi Kõrgus objekt h3. Real h3 = h1 + h2 kutsub h1 oma klasside operaatorfunktsiooni objektideks ja võtab parameetriks h2, seejärel rakendame h3.feet = jalad + d2.feet ja h3.inch = toll + d2.inch, mis salvestab h3 objektiga seotud muutujate jalgade ja tollide väärtuste summa.
Kui lause 'h3 = h1 + h2' kutsub üles operaatori ülekoormatud funktsiooni, võttis objekt h1 vastutuse funktsiooni kutsumise eest ja h2 mängib funktsioonile edastatava argumendi rolli. Ülaltoodud kutsungilause on samaväärne h3 = h1.operaator + (h2), seetõttu pääseb h2 andmeliikmele otse juurde ja h2 andmeliikmele (mis edastatakse argumendina) punktioperaatori abil.

Operaatori ülekoormamise reeglid

  • Ainult olemasolevaid operaatoreid saab üle koormata ja uusi operaatoreid ei saa üle koormata
  • Ülekoormatud operaator peab sisaldama vähemalt ühte kasutaja määratud andmetüüpi operandi.
  • Me ei kasuta sõbrafunktsiooni teatud operaatorite ülekoormamiseks. Kuid liikme funktsioone saab nende operaatorite ülekoormamiseks kasutada.
  • Kui unaaroperaatorid on liikmefunktsiooni kaudu ülekoormatud, ei võta nad selgesõnalisi argumente, kuid kui sõberfunktsioon on neid üle koormanud, võtavad nad ühe argumendi.
  • Kui binaaroperaatorid on liikmefunktsiooni kaudu ülekoormatud, võtavad nad ühe selgesõnalise argumendi ja kui sõberfunktsiooni kaudu ülekoormatud, võtavad nad kaks selget argumenti.

Nii oleme jõudnud selle artikli lõppu, mis käsitleb operaatori ülekoormamist C ++ keeles. Kui soovite rohkem teada saada, vaadake usaldusväärse veebipõhise õppefirma Edureka Java koolitust. Edureka oma Kursus on mõeldud selleks, et õpetada teid nii põhi- kui ka täiustatud Java-kontseptsioonide jaoks koos erinevate Java-raamistikega, nagu talveunerežiim ja kevad.

Kas teil on meile küsimus? Palun mainige seda selle blogi kommentaaride jaotises ja võtame teiega ühendust niipea kui võimalik.