C ++

C ++ Overbelastning av operatør

C ++ Overbelastning av operatør
Denne artikkelen gir en guide til overbelastning av operatører i C++. Overbelastning av operatører er en nyttig og kraftig funksjon i programmeringsspråket C ++. C ++ tillater overbelastning av de fleste innebygde operatører. I denne opplæringen vil vi bruke flere eksempler for å demonstrere operatørens overbelastningsmekanisme.

Hva er operatør?

En operatør er et symbol som indikerer at kompilatoren skal utføre en bestemt operasjon. For eksempel er det forskjellige typer operatører i C ++, for eksempel aritmetiske operatører, logiske operatører, relasjonsoperatører, oppdragsoperatører, bitvise operatører og mer.

Hva er operatøroverbelastning?

C ++ -språket lar programmerere gi spesielle betydninger til operatører. Dette betyr at du kan omdefinere operatøren for brukerdefinerte datatyper i C++. For eksempel brukes “+” til å legge til innebygde datatyper, for eksempel int, float, etc. For å legge til to typer brukerdefinerte data er det nødvendig å overbelaste “+” -operatøren.

Syntaks for operatøroverbelastning

C ++ gir en spesiell funksjon kalt “operatør” for operatøroverbelastning. Følgende er syntaksen for operatøroverbelastning:

class sampleClass

..
Offentlig:
returnType operatørsymbol (argumenter)
..

..
;

Her er "operatør" et nøkkelord, og "symbol" er operatøren vi vil overbelaste.

Eksempler

Nå som du forstår det overordnede konseptet med overbelastning av operatører, la oss gå gjennom et par eksempler på arbeidseksempler for å forstå denne ideen mer konkret. Vi vil dekke følgende eksempler:

  1. Eksempel 1: Unary Operator Overloading (1)
  2. Eksempel 2: Unary Operator Overloading (2)
  3. Eksempel 3: Overbelastning av binæroperatør
  4. Eksempel 4: Relasjonsoperatøroverbelastning

Eksempel 1: Unary Operator Overloading (1)

I dette eksemplet vil vi demonstrere hvordan en unary operatør kan bli overbelastet i C++. Vi har definert klassen "Square_Box" og de offentlige funksjonene, "operator ++ ()" og "operator ++ (int)," for å overbelaste både prefikset og postfix-trinnet. I “main ()” - funksjonen har vi opprettet objektet, “mySquare_Box1.”Vi har deretter brukt prefiks- og postfix-økningsoperatorene til“ mySquare_Box1 ”-objektet for å demonstrere den unary operatøren overbelastning.

#inkludere
bruker navneområde std;
klasse Square_Box

privat:
flyte lengde;
flottør bredde;
flytehøyde;
offentlig:
Square_Box ()
Square_Box (float l, float w, float h)

lengde = l;
bredde = w;
høyde = h;

// Operator Overloading - "++" prefix operator
ugyldig operatør ++ ()

lengde ++;
bredde ++;
høyde ++;

// Operatøroverbelastning - "++" postfix-operatør
ugyldig operatør ++ (int)

lengde ++;
bredde ++;
høyde ++;

ugyldig utgang ()

cout << "\tLength = " << length << endl;
cout << "\tWidth = " << width << endl;
cout << "\tHeight = " << height << endl;
cout << endl;

;
int main ()

Square_Box mySquare_Box1 (3.0, 5.0, 6.0);
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.produksjon();
mySquare_Box1 ++;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.produksjon();
++mySquare_Box1;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.produksjon();
retur 0;

Eksempel 2: Unary Operator Overloading (2)

Dette er et annet eksempel der vi vil demonstrere hvordan en unary operatør kan overbelastes i C++. Vi har definert klassen "Square_Box" og de offentlige funksjonene, "operator - ()" og "operator - (int)," for å overbelaste både prefiks- og postfix-dekrementoperatørene. I "main ()" - funksjonen har vi opprettet "mySquare_Box1" -objektet. Vi har deretter brukt prefiks- og postfix-dekrementeringsoperatorene på “mySquare_Box1” -objektet.

#inkludere
bruker navneområde std;
klasse Square_Box

privat:
flyte lengde;
flottør bredde;
flytehøyde;
offentlig:
Square_Box ()
Square_Box (float l, float w, float h)

lengde = l;
bredde = w;
høyde = h;

// Operatøroverbelastning - "-" prefiksoperatør
ugyldig operatør - ()

lengde--;
bredde--;
høyde--;

// Overbelastning av operatør - "-" postfix-operatør
ugyldig operatør - (int)

lengde--;
bredde--;
høyde--;

ugyldig utgang ()

cout << "\tLength = " << length << endl;
cout << "\tWidth = " << width << endl;
cout << "\tHeight = " << height << endl;
cout << endl;

;
int main ()

Square_Box mySquare_Box1 (3.0, 5.0, 6.0);
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.produksjon();
mySquare_Box1--;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.produksjon();
--mySquare_Box1;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.produksjon();
retur 0;

Eksempel 3: Overbelastning av binæroperatør

Nå skal vi se på et eksempel på overbelastning av binær operatør. Syntaksen for binær operatøroverbelastning vil være noe forskjellig fra unary operatøroverbelastning. I dette eksemplet vil vi overbelaste "+" -operatøren for å legge til to "Square_Box" -objekter.

#inkludere
bruker navneområde std;
klasse Square_Box

privat:
flyte lengde;
flottør bredde;
flytehøyde;
offentlig:
Square_Box ()
Square_Box (float l, float w, float h)

lengde = l;
bredde = w;
høyde = h;

// Overbelastning av operatør - "+" operatør
Square_Box operator + (con Square_Box & obj)

Square_Box temp;
temp.lengde = lengde + obj.lengde;
temp.bredde = bredde + obj.bredde;
temp.høyde = høyde + obj.høyde;
retur temp;

ugyldig utgang ()

cout << "\tLength = " << length << endl;
cout << "\tWidth = " << width << endl;
cout << "\tHeight = " << height << endl;
cout << endl;

;
int main ()

Square_Box mySquare_Box1 (3.0, 5.0, 6.0), mySquare_Box2 (2.0, 3.0, 5.0), resultat;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.produksjon();
cout << "Dimensions of mySquare_Box2 = " << endl;
mySquare_Box2.produksjon();
resultat = mySquare_Box1 + mySquare_Box2;
cout << "Dimensions of resultant square box = " << endl;
resultat.produksjon();
retur 0;

Eksempel 4: Relasjonsoperatøroverbelastning

Nå skal vi se på et eksempel på relasjonsoperatøroverbelastning. Syntaksen for relasjonsoperatøroverbelastning er akkurat som den for binæroperatøroverbelastning. I dette eksemplet vil vi overbelaste<” and “>”-Operatører for å bruke“ Square_Box ”-objektene.

#inkludere
bruker navneområde std;
klasse Square_Box

privat:
flyte lengde;
flottør bredde;
flytehøyde;
offentlig:
Square_Box ()
Square_Box (float l, float w, float h)

lengde = l;
bredde = w;
høyde = h;

// Overbelastning av operatør - "<" operator
bool-operatør < (const Square_Box& obj)

hvis (lengde < obj.length)
returner sant;
ellers
returner falsk;

// Operatøroverbelastning - ">" operatør
bool operator> (const Square_Box & obj)

hvis (lengde> obj.lengde)
returner sant;
ellers
returner falsk;

ugyldig utgang ()

cout << "\tLength = " << length << endl;
cout << "\tWidth = " << width << endl;
cout << "\tHeight = " << height << endl;
cout << endl;

;
int main ()

Square_Box mySquare_Box1 (2.0, 3.0, 5.0), mySquare_Box2 (4.0, 6.0, 8.0);
bool resultat;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.produksjon();
cout << "Dimensions of mySquare_Box2 = " << endl;
mySquare_Box2.produksjon();
resultat = mySquare_Box1 < mySquare_Box2;
cout << "mySquare_Box1 < mySquare_Box2 = " << result < mySquare_Box2;
cout < mySquare_Box2 = " << result << endl;
retur 0;

Konklusjon

C ++ er et generelt og fleksibelt programmeringsspråk som er mye brukt på en rekke domener. Dette programmeringsspråket støtter både kompileringstid og løpetidspolymorfisme. Denne artikkelen viste deg hvordan du utfører operatøroverbelastning i C++. Dette er en veldig nyttig funksjon av C ++ som legger til litt ekstra innsats for utvikleren å definere operatøren for overbelastning, men det gjør det definitivt livet enklere for brukeren av klassen.

Beste Linux Distros for spill i 2021
Linux-operativsystemet har kommet langt fra det originale, enkle, serverbaserte utseendet. Dette operativsystemet har forbedret seg enormt de siste år...
Hvordan fange opp og streame spilløkten din på Linux
Tidligere ble spill bare ansett som en hobby, men med tiden så spillindustrien en enorm vekst når det gjelder teknologi og antall spillere. Spillpubli...
Beste spill å spille med håndsporing
Oculus Quest introduserte nylig den gode ideen om håndsporing uten kontrollere. Med et stadig økende antall spill og aktiviteter som utfører støtte en...