Hvordan implementere overbelastning av operatører i c ++?



I denne artikkelen vil vi se på et annet objektorientert konsept som gjør operatørhåndtering enkel. Vi lærer operatøroverbelastning i C ++.

I denne artikkelen vil vi utforske enda et objektorientert konsept som gjør operatørhåndtering enkel. Det er at vi vil komme inn i detaljene til operatøren Overbelastning i C ++ . Følgende tips vil bli dekket i denne artikkelen,

Så la oss komme i gang med denne artikkelen om operatøroverbelastning i C ++.





Overbelastning i C ++

Hvis vi oppretter to eller flere medlemmer av samme klasse med samme navn, men forskjellige i antall eller type parameter, er det kjent som C ++ overbelastning.



I C ++ kan vi overbelaste:

big data tutorial for nybegynnere
  • metoder
  • konstruktører
  • indekserte eiendommer

Det er fordi disse medlemmene bare har parametere.

Fortsetter med denne artikkelen om operatøroverbelastning i C ++.



Typer av overbelastning i C ++

  • Funksjon overbelastning
  • Overbelastning av operatør

Overbelastning - Overbelastning av operatører I C ++ - Edureka

Fortsetter med denne artikkelen om operatøroverbelastning i C ++.

Hvorfor brukes operatørens overbelastning?

C ++ - programmer kan skrives uten kjennskap til operatørens overbelastning. Også operatøroperasjoner brukes i stor grad av programmerere for å gjøre programmet intuitivt. For eksempel,

Vi kan erstatte koden som:

beregning = legg til (del (a, b), multipliser (a, b))

For ligning

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

Overbelastning av operatører gir en enkel og enkel måte for utvikling av nye definisjoner for de fleste operatører i C ++. Med tilstrekkelig kunnskap kan vi nesten lage et eget eget språk ved kreativ bruk av funksjonen og operatørens overbelastningsteknikker. Vi kan overbelaste alle operatørene i C ++ bortsett fra følgende:
● Omfangsoperatør (: :)
● Størrelsesoperatør (Sizeof)
● medlemsvelger (.)
● medlemspekervelger (*)
● ternær operatør (? :)

Syntaks for operatøroverbelastning

return_type class_name:: operator op (argument_list) {// function body}

Der returtypen er typen verdi som returneres av funksjonen. class_name er navnet på klassen.

Fortsetter med denne artikkelen om operatøroverbelastning i C ++.

Implementering av operatøroverbelastning i C ++

Operatørfunksjonen må være enten ikke-statisk (medlemsfunksjon) eller vennefunksjon for å bli overbelastet. Operatøroverbelastningsfunksjon kan brukes på en medlemsfunksjon hvis venstre operand er et objekt i den klassen, men hvis venstre operand er annerledes, må operatøroverbelastningsfunksjonen defineres som en ikke-medlem-funksjon.
Operatøroverbelastningsfunksjon kan gjøres til vennefunksjon hvis den krever tilgang til de private og beskyttede medlemmene i klassen. For eksempel er operatøren op en operatørfunksjon der op er operatøren som blir overbelastet, og operatøren er nøkkelordet. Operatøroverbelastning kan oppnås ved å implementere en funksjon som kan være enten medlemsfunksjon, ikke-medlemsfunksjon eller vennefunksjon.

Hva er forskjellen mellom operatørfunksjoner og normale funksjoner?

Operatørfunksjoner er de samme som normale funksjoner. Den eneste forskjellen er at navnet på en operatørfunksjon alltid er operatørnøkkelord etterfulgt av symbolet på operatøren og operatørfunksjonene blir kalt når den tilsvarende operatøren brukes.

Fortsetter med denne artikkelen om operatøroverbelastning i C ++.

Typer av overbelastningstilnærminger

Operatøroverbelastning kan gjøres ved å bruke tre tilnærminger, de er

  • Overbelastning av unary operatør.
  • Overbelastning av binær operatør.
  • Overbelastning av binær operatør ved hjelp av en vennfunksjon.

Fortsetter med denne artikkelen om operatøroverbelastning i C ++.

Overbelastning av unary operatør

La oss se på den unariske ‘-’ operatøren. En minusoperator når den brukes som unary, krever den bare en operand. Vi vet at denne operatøren endrer tegnet på en operand når den brukes på en grunnleggende datavariabel. La oss se hvordan du overbelaster denne operatøren, slik at den kan brukes på et objekt på omtrent samme måte som den brukes på en int- eller float-variabel. Det unære minus, når det brukes på et objekt, skal redusere hvert av dataelementene.

Eksempel:

hadoop admin vs hadoop-utvikler
# inkludere bruk av navneområde std klasse Høyde {offentlig: // Medlemsobjekter int fot, tomme // Konstruktør for å initialisere objektets verdi Høyde (int f, int i) {fot = f tomme = i} // Overbelastning (-) operator til utfør dekrement // operasjon av høydeobjekt ugyldig operatør- () {fot-- tomme-- cout<< 'Feet & Inches after decrement: ' << feet << ' ' ' << inch <

Produksjon:

Forklaring:
I eksemplet ovenfor overbelaster vi ‘-’ unary operator for å utføre dekrement i de to variablene i Height-klassen. Vi overfører to parametere til konstruktøren og lagrer verdiene deres i fot og tomme variabel. Deretter definerer vi operatørens overbelastningsfunksjon (ugyldig operatør- ()
) der de to variablene blir redusert av en posisjon.
Når vi skriver -h1, kaller det operatørens overbelastningsfunksjon og reduserer verdiene som sendes til konstruktøren.

Fortsetter med denne artikkelen om operatøroverbelastning i C ++.

Overbelastning av binær operatør

Det er en overbelastning av en operatør som opererer på to operander. La oss ta det samme eksempelet på klasse Høyde, men denne gangen, legg til to høydeobjekter h1 og h2.

Eksempel:

# inkludere bruk av navneområde std klasse Høyde {offentlig: int fot, tomme Høyde () {fot = 0 tomme = 0} Høyde (int f, int i) {fot = f tomme = i} // Overbelastning (+) operatør for å utføre tillegg av // to avstandsobjekt ved hjelp av binær operator Høydeoperator + (Høyde & d2) // Ring ved referanse {// Opprett et objekt for å returnere Høyde h3 // Utfør tillegg av føtter og tommer h3.feet = feet + d2.feet h3. tomme = tomme + d2.inch // Returner det resulterende objektet retur h3}} int main () {Høyde h1 (3, 7) Høyde h2 (6, 1) Høyde h3 // Bruk overbelastet operatør h3 = h1 + h2 cout<< 'Sum of Feet & Inches: ' << h3.feet << ''' << h3.inch << endl return 0 } 

Produksjon:

Forklaring:
Høydeoperator + (Høyde & h2), her returnerer_type av funksjon er klasse Høyde, og returnerer dermed et objekt h3 av klasse Høyde. I linjen h3 = h1 + h2, kaller h1 operatørfunksjonen til sine klasseobjekter og tar h2 som parameter, så bruker vi h3.feet = feet + d2.feet og h3.inch = inch + d2.inch som lagrer summen av verdiene til variablene fot og tomme i variabler tilknyttet h3-objektet.
Når utsagnet ‘h3 = h1 + h2’ påkaller operatørens overbelastede funksjon, tok objektet h1 ansvaret for å påkalle funksjonen og h2 spiller argumentets rolle som overføres til funksjonen. Ovennevnte påkallingsuttalelse tilsvarer h3 = h1.operator + (h2), derfor får du tilgang til datalementet til h2 direkte og dataelementet til h2 (som sendes som et argument) ved hjelp av prikkoperatøren.

Regler for overbelastning av operatører

  • Bare de eksisterende operatørene kan overbelastes, og nye operatører kan ikke overbelastes
  • Den overbelastede operatøren må inneholde minst én operand av den brukerdefinerte datatypen.
  • Vi bruker ikke en vennfunksjon for å overbelaste visse operatører. Imidlertid kan medlemsfunksjonene brukes til å overbelaste disse operatørene.
  • Når unære operatører er overbelastet gjennom en medlemsfunksjon, tar de ingen eksplisitte argumenter, men hvis de blir overbelastet av en vennefunksjon, tar de ett argument.
  • Når binære operatører er overbelastet gjennom en medlemsfunksjon, tar de ett eksplisitt argument, og hvis de blir overbelastet gjennom en vennfunksjon, tar de to eksplisitte argumenter.

Dermed har vi kommet til en slutt på denne artikkelen om ‘Operator Overloading in C ++’. Hvis du ønsker å lære mer, kan du sjekke Java Training av Edureka, et pålitelig online læringsfirma. Edureka’s kurset er designet for å trene deg for både kjerne- og avanserte Java-konsepter sammen med forskjellige Java-rammer som Hibernate & Spring.

Har du et spørsmål til oss? Vennligst nevn det i kommentarfeltet på denne bloggen, så kommer vi tilbake til deg så snart som mulig.