Hvad er operatør?
En operatør er et symbol, der angiver over for compileren at udføre en bestemt operation. For eksempel er der forskellige typer operatører i C ++, såsom aritmetiske operatører, logiske operatører, relationsoperatører, tildelingsoperatører, bitvise operatører og mere.
Hvad er operatøroverbelastning?
C ++ - sproget giver programmører mulighed for at give operatører en særlig betydning. Dette betyder, at du kan omdefinere operatøren til brugerdefinerede datatyper i C++. For eksempel bruges “+” til at tilføje indbyggede datatyper, såsom int, float osv. For at tilføje to typer brugerdefinerede data er det nødvendigt at overbelaste "+" -operatøren.
Syntaks til operatøroverbelastning
C ++ har en speciel funktion kaldet "operatør" til operatøroverbelastning. Følgende er syntaksen for operatøroverbelastning:
klasse sampleClass..
Offentlig:
returnType operator symbol (argumenter)
..
..
;
Her er "operator" et nøgleord, og "symbol" er den operator, som vi vil overbelaste.
Eksempler
Nu hvor du forstår det overordnede koncept med overbelastning af operatører, så lad os gennemgå et par eksempler på eksempler, så du kan forstå denne idé mere konkret. Vi vil dække følgende eksempler:
- Eksempel 1: Unary operatøroverbelastning (1)
- Eksempel 2: Unary operatøroverbelastning (2)
- Eksempel 3: Overbelastning af binær operatør
- Eksempel 4: Overbelastning af relationsoperatører
Eksempel 1: Unary operatøroverbelastning (1)
I dette eksempel vil vi demonstrere, hvordan en unary operatør kan overbelastes i C++. Vi har defineret klassen "Square_Box" og de offentlige funktioner, "operator ++ ()" og "operator ++ (int)," for at overbelaste både præfikset og postfix-inkrementoperatorerne. I funktionen “main ()” har vi oprettet objektet, “mySquare_Box1.”Vi har derefter anvendt præfiks- og postfix-forøgelsesoperatorerne på“ mySquare_Box1 ”-objektet for at demonstrere den unary operatørs overbelastning.
#omfatteved hjælp af namespace std;
klasse Square_Box
privat:
flyde længde;
flyde bredde;
flydehøjde;
offentlig:
Square_Box ()
Square_Box (float l, float w, float h)
længde = l;
bredde = w;
højde = h;
// Operator Overloading - "++" præfiksoperatør
ugyldig operatør ++ ()
længde ++;
bredde ++;
højde ++;
// Operatøroverbelastning - "++" postfix-operatør
ugyldig operator ++ (int)
længde ++;
bredde ++;
højde ++;
ugyldig output ()
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.produktion();
mySquare_Box1 ++;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.produktion();
++mySquare_Box1;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.produktion();
returnere 0;
Eksempel 2: Unary operatøroverbelastning (2)
Dette er et andet eksempel, hvor vi vil demonstrere, hvordan en unary operatør kan overbelastes i C++. Vi har defineret klassen "Square_Box" og de offentlige funktioner, "operator - ()" og "operator - (int)", for at overbelaste både præfiks- og postfix-dekrementoperatorerne. I funktionen “main ()” har vi oprettet “mySquare_Box1” -objektet. Vi har derefter anvendt præfiks- og postfix-dekrementeringsoperatorerne på “mySquare_Box1” -objektet.
#omfatteved hjælp af namespace std;
klasse Square_Box
privat:
flyde længde;
flyde bredde;
flydehøjde;
offentlig:
Square_Box ()
Square_Box (float l, float w, float h)
længde = l;
bredde = w;
højde = h;
// Operatøroverbelastning - "-" præfiksoperatør
ugyldig operatør - ()
længde--;
bredde--;
højde--;
// Operatøroverbelastning - "-" postfix-operatør
ugyldig operatør - (int)
længde--;
bredde--;
højde--;
ugyldig output ()
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.produktion();
mySquare_Box1--;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.produktion();
--mySquare_Box1;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.produktion();
returnere 0;
Eksempel 3: Overbelastning af binær operatør
Nu vil vi se på et eksempel på binær operatørs overbelastning. Syntaksen for binær operatøroverbelastning vil være noget forskellig fra unary operatøroverbelastning. I dette eksempel overbelaster vi "+" -operatøren for at tilføje to "Square_Box" -objekter.
#omfatteved hjælp af namespace std;
klasse Square_Box
privat:
flyde længde;
flyde bredde;
flydehøjde;
offentlig:
Square_Box ()
Square_Box (float l, float w, float h)
længde = l;
bredde = w;
højde = h;
// Operatøroverbelastning - "+" operatør
Square_Box operator + (con Square_Box & obj)
Square_Box temp;
Midlertidig.længde = længde + obj.længde;
Midlertidig.bredde = bredde + obj.bredde;
Midlertidig.højde = højde + obj.højde;
retur temp;
ugyldig output ()
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.produktion();
cout << "Dimensions of mySquare_Box2 = " << endl;
mySquare_Box2.produktion();
resultat = mySquare_Box1 + mySquare_Box2;
cout << "Dimensions of resultant square box = " << endl;
resultat.produktion();
returnere 0;
Eksempel 4: Overbelastning af relationsoperatører
Nu vil vi se på et eksempel på relationel operatøroverbelastning. Syntaksen for relationel operatøroverbelastning er ligesom den for binær operatøroverbelastning. I dette eksempel overbelaster vi “<” and “>”-Operatører til at anvende på“ Square_Box ”-objekterne.
#omfatteved hjælp af namespace std;
klasse Square_Box
privat:
flyde længde;
flyde bredde;
flydehøjde;
offentlig:
Square_Box ()
Square_Box (float l, float w, float h)
længde = l;
bredde = w;
højde = h;
// Operatøroverbelastning - "<" operator
bool-operatør < (const Square_Box& obj)
hvis (længde < obj.length)
returner sandt;
andet
returner falsk;
// Operatøroverbelastning - ">" operatør
bool operator> (const Square_Box & obj)
hvis (længde> obj.længde)
returner sandt;
andet
returner falsk;
ugyldig output ()
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.produktion();
cout << "Dimensions of mySquare_Box2 = " << endl;
mySquare_Box2.produktion();
resultat = mySquare_Box1 < mySquare_Box2;
cout << "mySquare_Box1 < mySquare_Box2 = " << result < mySquare_Box2;
cout < mySquare_Box2 = " << result << endl;
returnere 0;
Konklusion
C ++ er et generelt og fleksibelt programmeringssprog, der er meget udbredt i en række forskellige domæner. Dette programmeringssprog understøtter både kompileringstid og runtime polymorfisme. Denne artikel viste dig, hvordan du udfører overbelastning af operatører i C++. Dette er en meget nyttig funktion i C ++, der tilføjer noget ekstra arbejde for udvikleren at definere operatøren til overbelastning, men det gør bestemt livet lettere for brugeren af klassen.