C ++

Supraîncărcarea operatorului C ++

Supraîncărcarea operatorului C ++
Acest articol oferă un ghid pentru supraîncărcarea operatorului în C++. Supraîncărcarea operatorului este o caracteristică utilă și puternică a limbajului de programare C ++. C ++ permite supraîncărcarea majorității operatorilor încorporați. În acest tutorial, vom folosi câteva exemple pentru a demonstra mecanismul de supraîncărcare a operatorului.

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:

  1. Exemplul 1: supraîncărcarea operatorului unar (1)
  2. Exemplul 2: supraîncărcarea operatorului unar (2)
  3. Exemplul 3: supraîncărcare a operatorului binar
  4. 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.

#include
folosind 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”.

#include
folosind 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”.

#include
folosind 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 ”.

#include
folosind 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.

Cum se utilizează AutoKey pentru automatizarea jocurilor Linux
AutoKey este un utilitar de automatizare desktop pentru Linux și X11, programat în Python 3, GTK și Qt. Folosind funcțiile sale de scriptare și MACRO,...
Cum se arată FPS Counter în jocurile Linux
Jocurile cu Linux au primit un impuls major când Valve a anunțat suportul Linux pentru clientul Steam și jocurile acestora în 2012. De atunci, multe j...
How to download and Play Sid Meier's Civilization VI on Linux
Introduction to the game Civilization 6 is a modern take on the classic concept introduced in the series of the Age of Empires games. The idea was fai...