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:
- Eksempel 1: Unary Operator Overloading (1)
- Eksempel 2: Unary Operator Overloading (2)
- Eksempel 3: Overbelastning av binæroperatør
- 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.
#inkluderebruker 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.
#inkluderebruker 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.
#inkluderebruker 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.
#inkluderebruker 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.