Kaip įgyvendinti operatoriaus perkrovą c ++ versijoje?



Šiame straipsnyje mes apžvelgsime dar vieną į objektą orientuotą koncepciją, kuri palengvina operatoriaus valdymą. Mes išmoktume operatoriaus perkrovą C ++.

Šiame straipsnyje mes išnagrinėsime dar vieną į objektą orientuotą koncepciją, kuri palengvina operatoriaus valdymą. Tai mes įsigilintume į Operatoriaus detales Perkrovimas C ++ . Tolimesni patarimai bus aptarti šiame straipsnyje,

Taigi, pradėkime nuo šio straipsnio apie operatoriaus perkrovą C ++.





skirtumas tarp „javascript“ ir „jquery“

Perkrovimas C ++

Jei sukursime du ar daugiau tos pačios klasės narių, turinčių tą patį pavadinimą, bet skirtingą parametrų skaičiumi ar tipu, tai vadinama C ++ perkrova.



C ++ versijoje galime perkrauti:

  • metodai
  • konstruktoriai
  • indeksuojamos savybės

Taip yra todėl, kad šie nariai turi tik parametrus.

Toliau su šiuo straipsniu apie operatoriaus perkrovą C ++.



Perkrovos tipai C ++

  • Funkcijos perkrova
  • Operatoriaus perkrova

Perkrovimas - operatoriaus perkrova C ++ - „Edureka“

Toliau su šiuo straipsniu apie operatoriaus perkrovą C ++.

Kodėl naudojamas operatoriaus perkrovimas?

C ++ programas galima rašyti nežinant operatoriaus perkrovos. Tada programuotojai labai naudojasi operatoriaus valdymu, kad programa būtų intuityvi. Pavyzdžiui,

Mes galime pakeisti kodą, pvz .:

skaičiavimas = pridėti (padalinti (a, b), padauginti (a, b))

Dėl lygties

skaičiavimas = (a / b) + (a * b)

Operatorių perkrova yra paprastas ir paprastas būdas parengti naujas apibrėžtis daugumai C ++ operatorių. Turėdami pakankamai žinių, galime beveik sukurti naują savo kalbą, kūrybiškai naudodami funkciją ir operatoriaus perkrovos metodus. Mes galime perkrauti visus operatorius C ++, išskyrus šiuos dalykus:
● Taikymo srities operatorius (: :)
● Dydžio operatorius (Sizeof)
● narių pasirinkimas (.)
● narių žymeklio parinkiklis (*)
● trijų komponentų operatorius (? :)

Operatoriaus perkrovos sintaksė

return_type klasės_pavadinimas:: operatorius op (argumentų_ sąrašas) {// funkcijos kūnas}

Kur grąžinimo tipas yra funkcijos grąžintos vertės tipas. klasės_pavadinimas yra klasės pavadinimas.

Toliau su šiuo straipsniu apie operatoriaus perkrovą C ++.

Operatoriaus perkrovos įgyvendinimas C ++

Operatoriaus funkcija turi būti arba statinė (nario funkcija), arba draugo funkcija, kad būtų perkrauta. Operatoriaus perkrovos funkcija gali būti taikoma nario funkcijai, jei kairysis operandas yra tos klasės objektas, tačiau jei kairysis operandas yra kitoks, tada Operatoriaus perkrovos funkcija turi būti apibrėžta kaip ne nario funkcija.
Operatoriaus perkrovos funkcija gali tapti draugo funkcija, jei jai reikalinga prieiga prie privačių ir saugomų klasės narių. Pavyzdžiui, operatorius op yra operatoriaus funkcija, kur op yra perkrautas operatorius, o operatorius yra raktinis žodis. Operatoriaus perkrova gali būti pasiekta įgyvendinant funkciją, kuri gali būti nario, ne nario ar draugo funkcija.

Kuo skiriasi operatoriaus funkcijos nuo įprastų funkcijų?

Operatoriaus funkcijos yra tokios pačios kaip ir įprastos. Vienintelis skirtumas yra tas, kad operatoriaus funkcijos pavadinimas visada yra operatoriaus raktinis žodis, po kurio nurodomas operatoriaus simbolis, o operatoriaus funkcijos iškviečiamos, kai naudojamas atitinkamas operatorius.

def __init __ (savęs):

Toliau su šiuo straipsniu apie operatoriaus perkrovą C ++.

Perkrovos būdų tipai

Operatoriaus perkrova gali būti atliekama naudojant tris būdus

  • Nepakrautas operatorius.
  • Dvejetainis operatorius perkraunamas.
  • Dvejetainio operatoriaus perkrova naudojant draugo funkciją.

Toliau su šiuo straipsniu apie operatoriaus perkrovą C ++.

„Unary“ operatoriaus perkrova

Panagrinėkime unarinį operatorių „-“. Minusas operatorius, kai jis naudojamas kaip unaras, reikalauja tik vieno operando. Mes žinome, kad šis operatorius keičia operando ženklą, kai jis taikomas pagrindiniam duomenų kintamajam. Pažiūrėkime, kaip perkrauti šį operatorių, kad jį būtų galima pritaikyti objektui taip pat, kaip ir int ar float kintamajam. Unarinis minusas, pritaikytas objektui, turėtų sumažinti kiekvieną jo duomenų elementą.

Pavyzdys:

#include naudojant vardų srities standartinę klasę Aukštis {public: // Member Objects int pėdos, colis // Konstruktorius inicijuojant objekto vertę Aukštis (int f, int i) {feet = f inch = i} // Operatoriaus perkrovimas (-) atlikti dekrementą // objekto „Aukštis“ operacija tuština operatorių- () {pėdos - colis - cout<< 'Feet & Inches after decrement: ' << feet << ' ' ' << inch <

Išvestis:

Paaiškinimas:
Ankstesniame pavyzdyje perkrauname „-“ unary operatorių, kad atliktume mažinimą dviem aukščio klasės kintamaisiais. Perduodame konstruktoriui du parametrus ir išsaugome jų reikšmes kojomis ir coliais. Tada mes apibrėžiame operatoriaus perkrovos funkciją (void operator- ()
), kuriame du kintamieji sumažinami viena pozicija.
Kai rašome -h1, tai iškviečia operatoriaus perkrovos funkciją ir mažina konstruktoriui perduotas vertes.

Toliau su šiuo straipsniu apie operatoriaus perkrovą C ++.

Dvejetainis operatorius perkraunamas

Tai yra operatoriaus, veikiančio dviem operandais, perkrova. Paimkime tą patį klasės „Height“ pavyzdį, tačiau šį kartą pridėkite du „Height“ objektus h1 ir h2.

Pavyzdys:

#include naudojant vardų srities standartinę klasę Aukštis {public: int feet, inch Height () {feet = 0 inch = 0} Height (int f, int i) {feet = f inch = i} // Operatorius perkrautas (+) pridėjus // dviejų atstumų objektą, naudojant dvejetainį operatorių Aukštis operatorius + (Aukštis & d2) // Iškvieskite pagal nuorodą {// Sukurkite objektą, kad grąžintumėte Aukštis h3 // Atlikite pėdų ir colių pridėjimą h3.feet = feet + d2.feet h3. colis = colis + d2.inch // Grąžinkite gautą objekto grąžą h3}} int main () {Aukštis h1 (3, 7) Aukštis h2 (6, 1) Aukštis h3 // Naudokite perkrautą operatorių h3 = h1 + h2 cout<< 'Sum of Feet & Inches: ' << h3.feet << ''' << h3.inch << endl return 0 } 

Išvestis:

Paaiškinimas:
Aukščio operatorius + (Height & h2), čia grąžina funkcijos_tipą yra klasės aukštis, taigi jis pateikia klasės Aukštis objektą h3. H3 = h1 + h2 eilutėje h1 iškviečia savo klasių objektų operatoriaus funkciją ir ima h2 kaip parametrą, tada mes taikome h3.feet = pėdos + d2.feet ir h3.inch = inch + d2.inch, kuriame saugoma kintamųjų pėdų ir colių reikšmių suma kintamuosiuose, susijusiuose su objektu h3.
Kai sakinys „h3 = h1 + h2“ iškviečia operatoriaus perkrautą funkciją, objektas h1 prisiėmė atsakomybę už funkcijos iškvietimą, o h2 vaidina argumento, kuris perduodamas funkcijai, vaidmenį. Pirmiau pateiktas iškvietimo sakinys yra lygiavertis h3 = h1.operator + (h2), todėl prie h2 duomenų nario yra prieinama tiesiogiai, o prie h2 duomenų nario (kuris perduodamas kaip argumentas) - prie taško operatoriaus.

Operatoriaus perkrovos taisyklės

  • Tik esami operatoriai gali būti perkrauti, o nauji operatoriai negali būti perkrauti
  • Perkrautame operatoriuje turi būti bent vienas vartotojo apibrėžto tipo operandas.
  • Mes nenaudojame draugo funkcijos tam, kad perkrautume tam tikrus operatorius. Tačiau narių funkcijos gali būti naudojamos perkrauti tuos operatorius.
  • Kai nevienodi operatoriai yra perkrauti per nario funkciją, jie nepriima jokių aiškių argumentų, tačiau, jei juos perkrauna draugo funkcija, jie priima vieną argumentą.
  • Kai dvejetainiai operatoriai yra perkrauti per nario funkciją, jie priima vieną aiškų argumentą, o jei jie yra perkrauti per draugo funkciją, jie priima du aiškius argumentus.

Taigi mes priėjome prie šio straipsnio „Operatoriaus perkrova C ++“ pabaigos. Jei norite sužinoti daugiau, apsilankykite patikimos internetinės mokymosi įmonės „Edureka“ „Java“ mokymuose. „Edureka“ kursai skirti mokyti jus tiek pagrindinėms, tiek pažangioms „Java“ koncepcijoms kartu su įvairiomis „Java“ sistemomis, tokiomis kaip „Hibernate & Spring“.

Turite mums klausimą? Prašau tai paminėti šio tinklaraščio komentarų skiltyje ir mes kuo greičiau susisieksime su jumis.