C ++

Preťaženie operátora C ++

Preťaženie operátora C ++
Tento článok poskytuje sprievodcu preťažením operátora v C++. Preťaženie operátora je užitočnou a výkonnou vlastnosťou programovacieho jazyka C ++. C ++ umožňuje preťaženie väčšiny zabudovaných operátorov. V tomto tutoriále použijeme niekoľko príkladov na demonštráciu mechanizmu preťaženia operátora.

Čo je operátor?

Operátor je symbol, ktorý označuje kompilátor, aby vykonal konkrétnu operáciu. Napríklad v C ++ existujú rôzne typy operátorov, ako sú aritmetické operátory, logické operátory, relačné operátory, operátory priradenia, bitové operátory a ďalšie.

Čo je preťaženie operátora?

Jazyk C ++ umožňuje programátorom dávať operátorom špeciálne významy. To znamená, že v C môžete predefinovať operátora pre používateľom definované dátové typy++. Napríklad „+“ sa používa na pridanie zabudovaných dátových typov, ako sú int, float atď. Ak chcete pridať dva typy dát definovaných používateľom, je potrebné preťažiť operátor „+“.

Syntax pre preťaženie operátora

C ++ poskytuje špeciálnu funkciu s názvom „operator“ na preťaženie operátora. Nasleduje syntax pre preťaženie operátora:

trieda sampleClass


Verejné:
symbol operátora returnType (argumenty)



;

Tu je „operátor“ kľúčové slovo a „symbol“ je operátor, ktorý chceme preťažiť.

Príklady

Teraz, keď rozumiete celkovému konceptu preťaženia operátora, prejdime si niekoľko pracovných príkladov programov, aby ste tejto myšlienke porozumeli konkrétnejšie. Uvedieme nasledujúce príklady:

  1. Príklad 1: Preťaženie unárneho operátora (1)
  2. Príklad 2: Preťaženie unárneho operátora (2)
  3. Príklad 3: Preťaženie binárneho operátora
  4. Príklad 4: Preťaženie relačného operátora

Príklad 1: Preťaženie unárneho operátora (1)

V tomto príklade si ukážeme, ako môže byť unárny operátor preťažený v C++. Definovali sme triedu „Square_Box“ a verejné funkcie „operator ++ ()“ a „operator ++ (int)“ na preťaženie operátorov prírastku aj prírastku postfix. Vo funkcii „main ()“ sme vytvorili objekt „mySquare_Box1.„Potom sme na objekt„ mySquare_Box1 “použili operátory prírastku prefixu a postfixu, aby sme demonštrovali preťaženie unárneho operátora.

#include
pomocou namespace std;
trieda Square_Box

súkromné:
dĺžka plaváka;
šírka plaváka;
výška plaváka;
verejné:
Square_Box ()
Square_Box (float l, float w, float h)

dĺžka = l;
šírka = š;
výška = h;

// Preťaženie operátora - operátor predpony „++“
neplatný operátor ++ ()

dĺžka ++;
šírka ++;
výška ++;

// Operator Overloading - "++" operátor postfixu
void operator ++ (int)

dĺžka ++;
šírka ++;
výška ++;

neplatný výstup ()

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.výkon();
mySquare_Box1 ++;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.výkon();
++mySquare_Box1;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.výkon();
návrat 0;

Príklad 2: Preťaženie unárneho operátora (2)

Toto je ďalší príklad, v ktorom ukážeme, ako môže byť unárny operátor preťažený v C++. Definovali sme triedu „Square_Box“ a verejné funkcie „operator - ()“ a „operator - (int)“ na preťaženie operátorov prefixu aj postfixu dekrementácie. Vo funkcii „main ()“ sme vytvorili objekt „mySquare_Box1“. Potom sme na objekt „mySquare_Box1“ použili operátory prefixu a postfixu.

#include
pomocou namespace std;
trieda Square_Box

súkromné:
dĺžka plaváka;
šírka plaváka;
výška plaváka;
verejné:
Square_Box ()
Square_Box (float l, float w, float h)

dĺžka = l;
šírka = š;
výška = h;

// Operator Overloading - "-" operátor prefixu
neplatný operátor - ()

dĺžka--;
šírka--;
výška--;

// Operator Overloading - "-" operátor postfixu
void operator - (int)

dĺžka--;
šírka--;
výška--;

neplatný výstup ()

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.výkon();
mySquare_Box1--;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.výkon();
--mySquare_Box1;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.výkon();
návrat 0;

Príklad 3: Preťaženie binárneho operátora

Teraz sa pozrieme na príklad preťaženia binárneho operátora. Syntax pre preťaženie binárneho operátora sa bude trochu líšiť od preťaženia unárneho operátora. V tomto príklade preťažíme operátor „+“ a pridáme dva objekty „Square_Box“.

#include
pomocou namespace std;
trieda Square_Box

súkromné:
dĺžka plaváka;
šírka plaváka;
výška plaváka;
verejné:
Square_Box ()
Square_Box (float l, float w, float h)

dĺžka = l;
šírka = š;
výška = h;

// Preťaženie operátora - operátor „+“
Square_Box operator + (const Square_Box & obj)

Square_Box temp;
tepl.dĺžka = dĺžka + obj.dĺžka;
tepl.šírka = šírka + obj.šírka;
tepl.výška = výška + obj.výška;
návratová teplota;

neplatný výstup ()

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), výsledok;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.výkon();
cout << "Dimensions of mySquare_Box2 = " << endl;
mySquare_Box2.výkon();
výsledok = mySquare_Box1 + mySquare_Box2;
cout << "Dimensions of resultant square box = " << endl;
výsledok.výkon();
návrat 0;

Príklad 4: Preťaženie relačného operátora

Teraz sa pozrieme na príklad preťaženia relačných operátorov. Syntax preťaženia relačných operátorov je rovnaká ako syntax preťaženia binárnych operátorov. V tomto príklade preťažíme „<” and “>”Operátory, ktoré sa majú použiť na objekty“ Square_Box ”.

#include
pomocou namespace std;
trieda Square_Box

súkromné:
dĺžka plaváka;
šírka plaváka;
výška plaváka;
verejné:
Square_Box ()
Square_Box (float l, float w, float h)

dĺžka = l;
šírka = š;
výška = h;

// Preťaženie operátora - "<" operator
operátor bool < (const Square_Box& obj)

ak (dĺžka < obj.length)
návrat pravdivý;
inak
návrat nepravdivý;

// Operator Overloading - ">" operátor
bool operator> (const Square_Box & obj)

if (dĺžka> obj.dĺžka)
návrat pravdivý;
inak
návrat nepravdivý;

neplatný výstup ()

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 vysledok;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.výkon();
cout << "Dimensions of mySquare_Box2 = " << endl;
mySquare_Box2.výkon();
výsledok = mySquare_Box1 < mySquare_Box2;
cout << "mySquare_Box1 < mySquare_Box2 = " << result < mySquare_Box2;
cout < mySquare_Box2 = " << result << endl;
návrat 0;

Záver

C ++ je univerzálny a flexibilný programovací jazyk, ktorý sa široko používa v rôznych doménach. Tento programovací jazyk podporuje polymorfizmus za kompilácie aj za behu. Tento článok vám ukázal, ako vykonať preťaženie operátora v jazyku C++. Toto je veľmi užitočná vlastnosť jazyka C ++, ktorá dodáva vývojárovi ďalšie úsilie pri definovaní operátora pre preťaženie, ale určite uľahčuje život používateľovi triedy.

Hry Najlepšie aplikácie na mapovanie gamepadu pre Linux
Najlepšie aplikácie na mapovanie gamepadu pre Linux
Ak radi hráte hry v systéme Linux s gamepadom namiesto typického systému vstupu pre klávesnicu a myš, máte tu niekoľko užitočných aplikácií. Mnoho hie...
Hry Užitočné nástroje pre hráčov systému Linux
Užitočné nástroje pre hráčov systému Linux
Ak radi hráte hry v systéme Linux, je pravdepodobné, že ste na vylepšenie herného zážitku použili aplikácie a pomôcky ako Wine, Lutris a OBS Studio. O...
Hry HD remasterované hry pre Linux, ktoré nikdy predtým nemali vydanie Linuxu
HD remasterované hry pre Linux, ktoré nikdy predtým nemali vydanie Linuxu
Mnoho vývojárov a vydavateľov hier prichádza s remastrom starých hier v rozlíšení HD, aby predĺžili životnosť franšízy. Prosím fanúšikov, ktorí požadu...