Ce este Operator?
Un operator este un simbol care indică compilatorului să efectueze o anumită operație. De exemplu, există diferite tipuri de operatori în C ++, cum ar fi Operatori aritmetici, Operatori logici, Operatori relaționali, Operatori de atribuire, Operatori în biți și multe altele.
Ce este supraîncărcarea operatorului?
Limbajul C ++ permite programatorilor să dea semnificații speciale operatorilor. Aceasta înseamnă că puteți redefini operatorul pentru tipurile de date definite de utilizator în C++. De exemplu, „+” este utilizat pentru a adăuga tipuri de date încorporate, cum ar fi int, float etc. Pentru a adăuga două tipuri de date definite de utilizator, este necesar să supraîncărcați operatorul „+”.
Sintaxa pentru supraîncărcarea operatorului
C ++ oferă o funcție specială numită „operator” pentru supraîncărcarea operatorului. Următoarea este sintaxa pentru supraîncărcarea operatorului:
clasă eșantion Clasă..
Public:
simbolul operatorului returnType (argumente)
..
..
;
Aici, „operator” este un cuvânt cheie, iar „simbol” este operatorul pe care dorim să îl supraîncărcăm.
Exemple
Acum că înțelegeți conceptul general de supraîncărcare a operatorului, permiteți-ne să parcurgem câteva exemple de programe de lucru pentru a înțelege această idee mai concret. Vom acoperi următoarele exemple:
- Exemplul 1: supraîncărcarea operatorului unar (1)
- Exemplul 2: supraîncărcarea operatorului unar (2)
- Exemplul 3: supraîncărcare a operatorului binar
- Exemplul 4: supraîncărcare a operatorului relațional
Exemplul 1: supraîncărcare unitară a operatorului (1)
În acest exemplu, vom demonstra cum un operator unar poate fi supraîncărcat în C++. Am definit clasa, „Square_Box” și funcțiile publice, „operator ++ ()” și „operator ++ (int)”, pentru a supraîncărca atât prefixul, cât și operatorii de incrementare a postfixului. În funcția „main ()”, am creat obiectul, „mySquare_Box1.”Am aplicat apoi operatorii de creștere a prefixului și postfixului la obiectul„ mySquare_Box1 ”pentru a demonstra supraîncărcarea operatorului unar.
#includefolosind spațiul de nume std;
clasa Square_Box
privat:
lungimea plutitorului;
lățimea plutitorului;
înălțimea plutitorului;
public:
Cutie patrata()
Square_Box (float l, float w, float h)
lungime = l;
lățime = w;
înălțime = h;
// Supraîncărcare operator - Operator prefix „++”
void operator ++ ()
lungime ++;
lățime ++;
înălțime ++;
// Operator Overloading - "++" postfix operator
void operator ++ (int)
lungime ++;
lățime ++;
înălțime ++;
ieșire nulă ()
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.ieșire ();
mySquare_Box1 ++;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.ieșire ();
++mySquare_Box1;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.ieșire ();
retur 0;
Exemplul 2: supraîncărcarea operatorului unar (2)
Acesta este un alt exemplu în care vom demonstra cum un operator unar poate fi supraîncărcat în C++. Am definit clasa, „Square_Box” și funcțiile publice, „operator - ()” și „operator - (int)”, pentru a supraîncărca atât operatorii de decrementare prefix, cât și postfix. În funcția „main ()”, am creat obiectul „mySquare_Box1”. Am aplicat apoi operatorii de decrementare prefix și postfix la obiectul „mySquare_Box1”.
#includefolosind spațiul de nume std;
clasa Square_Box
privat:
lungimea plutitorului;
lățimea plutitorului;
înălțimea plutitorului;
public:
Cutie patrata()
Square_Box (float l, float w, float h)
lungime = l;
lățime = w;
înălțime = h;
// Operator Overloading - "-" operator prefix
operator nul - ()
lungime--;
lăţime--;
înălţime--;
// Supraîncărcare operator - "-" operator postfix
operator nul - (int)
lungime--;
lăţime--;
înălţime--;
ieșire nulă ()
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.ieșire ();
mySquare_Box1--;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.ieșire ();
--mySquare_Box1;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.ieșire ();
retur 0;
Exemplul 3: supraîncărcare a operatorului binar
Acum, vom analiza un exemplu de supraîncărcare a operatorului binar. Sintaxa pentru supraîncărcarea operatorului binar va fi oarecum diferită de supraîncărcarea operatorului unar. În acest exemplu, vom supraîncărca operatorul „+” pentru a adăuga două obiecte „Square_Box”.
#includefolosind spațiul de nume std;
clasa Square_Box
privat:
lungimea plutitorului;
lățimea plutitorului;
înălțimea plutitorului;
public:
Cutie patrata()
Square_Box (float l, float w, float h)
lungime = l;
lățime = w;
înălțime = h;
// Supraîncărcare operator - operator "+"
Operator Square_Box + (const Square_Box & obj)
Square_Box temp;
temp.lungime = lungime + obiect.lungime;
temp.width = width + obj.lăţime;
temp.înălțime = înălțime + obiect.înălţime;
revenire temp;
ieșire nulă ()
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), rezultat;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.ieșire ();
cout << "Dimensions of mySquare_Box2 = " << endl;
mySquare_Box2.ieșire ();
result = mySquare_Box1 + mySquare_Box2;
cout << "Dimensions of resultant square box = " << endl;
rezultat.ieșire ();
retur 0;
Exemplul 4: supraîncărcare a operatorului relațional
Acum, vom analiza un exemplu de supraîncărcare a operatorului relațional. Sintaxa pentru supraîncărcarea operatorului relațional este la fel ca cea a supraîncărcării operatorului binar. În acest exemplu, vom supraîncărca „<” and “>”Operatorii să se aplice obiectelor„ Square_Box ”.
#includefolosind spațiul de nume std;
clasa Square_Box
privat:
lungimea plutitorului;
lățimea plutitorului;
înălțimea plutitorului;
public:
Cutie patrata()
Square_Box (float l, float w, float h)
lungime = l;
lățime = w;
înălțime = h;
// Supraîncărcarea operatorului - "<" operator
operator bool < (const Square_Box& obj)
dacă (lungimea < obj.length)
întoarce-te adevărat;
altceva
returnează fals;
// Supraîncărcare operator - operator ">"
operator bool> (const Square_Box & obj)
if (lungime> obj.lungime)
întoarcere adevărată;
altceva
returnează fals;
ieșire nulă ()
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);
rezultatul bool;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.ieșire ();
cout << "Dimensions of mySquare_Box2 = " << endl;
mySquare_Box2.ieșire ();
result = mySquare_Box1 < mySquare_Box2;
cout << "mySquare_Box1 < mySquare_Box2 = " << result < mySquare_Box2;
cout < mySquare_Box2 = " << result << endl;
retur 0;
Concluzie
C ++ este un limbaj de programare de uz general și flexibil care este utilizat pe scară largă într-o varietate de domenii. Acest limbaj de programare acceptă atât polimorfismul în timp de compilare, cât și cel de execuție. Acest articol v-a arătat cum să efectuați supraîncărcarea operatorului în C++. Aceasta este o caracteristică foarte utilă a C ++, care adaugă un efort suplimentar dezvoltatorului pentru a defini operatorul pentru supraîncărcare, dar cu siguranță facilitează viața utilizatorului clasei.