C ++ Operatøroverbelastning

C ++ Operatøroverbelastning
Denne artikkelen gir en guide til overbelastning av operatøren i C++. Overbelastning av operatør er et nyttig og kraftig trekk ved 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 for kompilatoren for å utføre en bestemt operasjon. For eksempel er det forskjellige typer operatører i C ++, for eksempel aritmetiske operatører, logiske operatører, relasjonelle operatører, oppdragsoperatører, bitvise operatører og mer.

Hva er overbelastning av operatøren?

C ++ -språket lar programmerere gi spesielle betydninger til operatørene. 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 overbelastning av operatør

C ++ gir en spesiell funksjon som kalles "operatør" for overbelastning av operatør. Følgende er syntaks for overbelastning av operatør:

Klasse sampleclass

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

..
;

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

Eksempler

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

  1. Eksempel 1: Unary Operator Overbelastning (1)
  2. Eksempel 2: Unary Operator Overbelastning (2)
  3. Eksempel 3: Overbelastning av binær operatør
  4. Eksempel 4: Overbelastning av relasjonsoperatør

Eksempel 1: Unary Operator Overbelastning (1)

I dette eksemplet vil vi 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 prefikset og Postfix -økningsoperatørene. I "main ()" -funksjonen har vi opprettet objektet, "mysquare_box1.”Vi har da brukt prefikset og postfiks -økningsoperatørene på“ MySquare_box1 ”-objektet for å demonstrere den unary operatøren overbelastning.

#inkludere
ved hjelp av navneområdet STD;
klasse Square_box

privat:
flyte lengde;
flytebredde;
flytehøyde;
offentlig:
Square_box ()
Square_box (Float L, Float W, Float H)

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

// Overbelastning av operatør - "++" Prefiksoperatør
void operatør ++ ()

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

// Overbelastning av operatør - "++" Postfix -operatør
void 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 Overbelastning (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, "Operatør - ()" og "Operatør - (Int)", for å overbelaste både prefikset og postfikset Dekrement -operatører. I "Main ()" -funksjonen har vi opprettet "MySquare_Box1" -objektet. Vi har da brukt prefikset og postfiks -dekrementoperatørene på "mysquare_box1" -objektet.

#inkludere
ved hjelp av navneområdet STD;
klasse Square_box

privat:
flyte lengde;
flytebredde;
flytehøyde;
offentlig:
Square_box ()
Square_box (Float L, Float W, Float H)

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

// Overbelastning av operatør-"-" Prefiksoperatør
ugyldig operatør - ()

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

// Overbelastning av operatør-"-" Postfix Operator
void 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ær operatør

Nå vil vi se på et eksempel på overbelastning av binær operatør. Syntaksen for overbelastning av binær operatør vil være noe annerledes enn Overnaders overbelastning av operatøren. I dette eksemplet vil vi overbelaste "+" -operatøren for å legge til to “Square_box” -objekter.

#inkludere
ved hjelp av navneområdet STD;
klasse Square_box

privat:
flyte lengde;
flytebredde;
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 + (const 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: Overbelastning av relasjonsoperatør

Nå vil vi se på et eksempel på overbelastning av relasjonsoperatør. Syntaksen for overbelastning av relasjonsoperatør er akkurat som den binære operatørens overbelastning. I dette eksemplet vil vi overbelaste "" -operatørene for å søke på "Square_box" -objektene.

#inkludere
ved hjelp av navneområdet STD;
klasse Square_box

privat:
flyte lengde;
flytebredde;
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
booloperatør < (const Square_Box& obj)

hvis (lengde < obj.length)
return True;
ellers
return falsk;

// Overbelastning av operatør - ">" Operatør
booloperatør> (const square_box & obj)

if (lengde> obj.lengde)
return True;
ellers
return 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);
boolresultat;
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 formål og fleksibelt programmeringsspråk som er mye brukt i en rekke domener. Dette programmeringsspråket støtter både kompileringstid og polymorfisme av kjøretid og kjøretid. Denne artikkelen viste deg hvordan du kan utføre overbelastning av operatøren i C++. Dette er en veldig nyttig funksjon ved C ++ som gir litt ekstra innsats for utvikleren å definere operatøren for overbelastning, men det gjør definitivt livet enklere for brukeren av klassen.