C ++

Preobremenitev operaterja C ++

Preobremenitev operaterja C ++
Ta članek vsebuje navodila za preobremenitev operaterja v jeziku C++. Preobremenitev operaterja je uporabna in zmogljiva lastnost programskega jezika C ++. C ++ omogoča preobremenitev večine vgrajenih operaterjev. V tej vadnici bomo uporabili več primerov za prikaz mehanizma preobremenitve operaterja.

Kaj je operater?

Operator je simbol, ki prevajalniku pomeni, da izvede določeno operacijo. Na primer, v C ++ obstajajo različne vrste operaterjev, kot so aritmetični operaterji, logični operaterji, relacijski operaterji, operaterji dodelitve, bitni operaterji in še več.

Kaj je preobremenitev operaterja?

Jezik C ++ programerjem omogoča, da operaterjem dajo poseben pomen. To pomeni, da lahko operaterja znova definirate za uporabniško določene podatkovne tipe v jeziku C++. Na primer, »+« se uporablja za dodajanje vgrajenih podatkovnih vrst, kot so int, float itd. Če želite dodati dve vrsti uporabniško določenih podatkov, morate preobremeniti operaterja "+".

Sintaksa za preobremenitev operaterja

C ++ ponuja posebno funkcijo, imenovano "operator" za preobremenitev operaterja. Sledi sintaksa preobremenitve operaterja:

razred sampleClass

..
Javno:
simbol operatorja returnType (argumenti)
..

..
;

Tu je "operator" ključna beseda, "symbol" pa operater, ki ga želimo preobremeniti.

Primeri

Zdaj, ko razumete splošni koncept preobremenitve operaterja, si oglejmo nekaj delovnih programov, da boste to idejo razumeli bolj konkretno. Obravnavali bomo naslednje primere:

  1. Primer 1: Preobremenitev enoličnega operaterja (1)
  2. Primer 2: Preobremenitev enoličnega operaterja (2)
  3. Primer 3: Preobremenitev binarnega operaterja
  4. Primer 4: Preobremenitev relacijskega operaterja

Primer 1: Preobremenitev enoličnega operaterja (1)

V tem primeru bomo prikazali, kako je lahko unarni operater preobremenjen v C++. Določili smo razred "Square_Box" in javne funkcije, "operator ++ ()" in "operator ++ (int)", da preobremenimo tako operaterje prirastka predpone in postfiksa. V funkciji “main ()” smo ustvarili objekt, “mySquare_Box1."Nato smo za objekt" mySquare_Box1 "uporabili operatorja prirastka predpone in postfiksa, da dokažemo preobremenitev enoličnega operaterja.

#include
uporaba imenskega prostora std;
razred Square_Box

zasebno:
dolžina plovca;
širina plovca;
višina plovca;
javno:
Square_Box ()
Square_Box (float l, float w, float h)

dolžina = l;
širina = w;
višina = h;

// Preobremenitev operaterja - operater predpone "++"
void operator ++ ()

dolžina ++;
širina ++;
višina ++;

// Preobremenitev operaterja - operater postfix "++"
void operator ++ (int)

dolžina ++;
širina ++;
višina ++;

izhod iz praznine ()

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.izhod ();
mySquare_Box1 ++;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.izhod ();
++mySquare_Box1;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.izhod ();
vrnitev 0;

Primer 2: Preobremenitev enoličnega operaterja (2)

To je še en primer, v katerem bomo pokazali, kako je lahko unarni operater preobremenjen v C++. Določili smo razred "Square_Box" in javne funkcije, "operator - ()" in "operator - (int)", da preobremenimo operaterje dekrementa predpone in postfiksa. V funkciji “main ()” smo ustvarili objekt “mySquare_Box1”. Nato smo za objekt »mySquare_Box1« uporabili operaterje dekrementa predpone in postfiksa.

#include
uporaba imenskega prostora std;
razred Square_Box

zasebno:
dolžina plovca;
širina plovca;
višina plovca;
javno:
Square_Box ()
Square_Box (float l, float w, float h)

dolžina = l;
širina = w;
višina = h;

// Preobremenitev operaterja - "-" operater predpone
operater void - ()

dolžina--;
premer--;
višina--;

// Preobremenitev operaterja - "-" operater postfix
operater void - (int)

dolžina--;
premer--;
višina--;

izhod iz praznine ()

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.izhod ();
mySquare_Box1--;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.izhod ();
--mySquare_Box1;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.izhod ();
vrnitev 0;

Primer 3: Preobremenitev binarnega operaterja

Zdaj si bomo ogledali primer preobremenitve binarnih operaterjev. Sintaksa za preobremenitev binarnega operaterja se bo nekoliko razlikovala od preobremenitve z enoličnim operatorjem. V tem primeru bomo operator "+" preobremenili, da dodamo dva predmeta "Square_Box".

#include
uporaba imenskega prostora std;
razred Square_Box

zasebno:
dolžina plovca;
širina plovca;
višina plovca;
javno:
Square_Box ()
Square_Box (float l, float w, float h)

dolžina = l;
širina = w;
višina = h;

// Preobremenitev operaterja - "+" operater
Operator Square_Box + (const Square_Box & obj)

Temp Square_Box;
temp.dolžina = dolžina + obj.dolžina;
temp.širina = širina + obj.premer;
temp.višina = višina + obj.višina;
vrnitev temp;

izhod iz praznine ()

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.izhod ();
cout << "Dimensions of mySquare_Box2 = " << endl;
mySquare_Box2.izhod ();
rezultat = mySquare_Box1 + mySquare_Box2;
cout << "Dimensions of resultant square box = " << endl;
rezultat.izhod ();
vrnitev 0;

Primer 4: Preobremenitev relacijskega operaterja

Zdaj si bomo ogledali primer preobremenitve relacijskega operaterja. Sintaksa za preobremenitev relacijskega operaterja je podobna sintaksi preobremenitve binarnega operaterja. V tem primeru bomo preobremenili »<” and “>", Da se uporabljajo za predmete" Square_Box ".

#include
uporaba imenskega prostora std;
razred Square_Box

zasebno:
dolžina plovca;
širina plovca;
višina plovca;
javno:
Square_Box ()
Square_Box (float l, float w, float h)

dolžina = l;
širina = w;
višina = h;

// Preobremenitev operaterja - "<" operator
operater bool < (const Square_Box& obj)

če (dolžina < obj.length)
vrni res;
drugače
vrni false;

// Preobremenitev operaterja - ">" operater
bool operator> (const Square_Box & obj)

if (dolžina> obj.dolžina)
vrnitev true;
drugače
vrnitev false;

izhod iz praznine ()

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);
rezultat bool;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.izhod ();
cout << "Dimensions of mySquare_Box2 = " << endl;
mySquare_Box2.izhod ();
rezultat = mySquare_Box1 < mySquare_Box2;
cout << "mySquare_Box1 < mySquare_Box2 = " << result < mySquare_Box2;
cout < mySquare_Box2 = " << result << endl;
vrnitev 0;

Zaključek

C ++ je splošen in prilagodljiv programski jezik, ki se pogosto uporablja na različnih področjih. Ta programski jezik podpira polimorfizem med prevajanjem in med izvajanjem. Ta članek vam je pokazal, kako izvesti preobremenitev operaterja v jeziku C++. To je zelo uporabna lastnost C ++, ki razvijalcu doda nekaj dodatnih naporov pri določanju operaterja za preobremenitev, vsekakor pa olajša življenje uporabnika razreda.

Kako spremeniti miškin kazalec in velikost, barvo in shemo kazalca v sistemu Windows 10
Kazalec miške in kazalec v operacijskem sistemu Windows 10 sta zelo pomembna vidika operacijskega sistema. To lahko rečemo tudi za druge operacijske s...
Brezplačni in odprtokodni igralni mehanizmi za razvoj iger Linux
Ta članek bo zajemal seznam brezplačnih in odprtokodnih igralnih mehanizmov, ki jih je mogoče uporabiti za razvoj 2D in 3D iger v Linuxu. Obstaja veli...
Vadnica Shadow of the Tomb Raider za Linux
Shadow of the Tomb Raider je dvanajsti dodatek k seriji Tomb Raider - franšiza akcijsko-pustolovskih iger, ki jo je ustvaril Eidos Montreal. Kritiki i...