Č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:
- Príklad 1: Preťaženie unárneho operátora (1)
- Príklad 2: Preťaženie unárneho operátora (2)
- Príklad 3: Preťaženie binárneho operátora
- 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.
#includepomocou 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.
#includepomocou 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“.
#includepomocou 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 ”.
#includepomocou 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.