Co je operátor?
Operátor je symbol, který kompilátoru indikuje provedení konkrétní operace. Například v C ++ existují různé typy operátorů, jako jsou aritmetické operátory, logické operátory, relační operátory, operátory přiřazení, bitové operátory a další.
Co je přetížení operátora?
Jazyk C ++ umožňuje programátorům dávat operátorům speciální významy. To znamená, že můžete předefinovat operátor pro uživatelem definované datové typy v jazyce C++. Například „+“ se používá k přidání předdefinovaných datových typů, například int, float atd. Chcete-li přidat dva typy dat definovaných uživatelem, je nutné přetížit operátor „+“.
Syntaxe pro přetížení operátora
C ++ poskytuje speciální funkci zvanou „operator“ pro přetížení operátora. Následuje syntaxe přetížení operátoru:
třída sampleClass…
Veřejnost:
symbol operátoru returnType (argumenty)
…
…
;
Zde je „operátor“ klíčové slovo a „symbol“ je operátor, který chceme přetížit.
Příklady
Nyní, když rozumíte celkovému konceptu přetížení operátora, projdeme si několik pracovních ukázkových programů, abyste této myšlence porozuměli konkrétněji. Pokryjeme následující příklady:
- Příklad 1: Přetížení unárního operátora (1)
- Příklad 2: Přetížení unárního operátora (2)
- Příklad 3: Přetížení binárního operátoru
- Příklad 4: Přetížení relačního operátora
Příklad 1: Přetížení unárního operátora (1)
V tomto příkladu si ukážeme, jak lze unární operátor v C přetížit++. Definovali jsme třídu „Square_Box“ a veřejné funkce „operator ++ ()“ a „operator ++ (int)“, abychom přetížili operátory přípony i přípony. Ve funkci „main ()“ jsme vytvořili objekt „mySquare_Box1.„Poté jsme na objekt„ mySquare_Box1 “aplikovali operátory přírůstku prefixu a postfixu, abychom demonstrovali přetížení unárního operátoru.
#zahrnoutpomocí jmenného prostoru std;
třída Square_Box
soukromé:
délka plováku;
šířka plováku;
výška plováku;
veřejnost:
Square_Box ()
Square_Box (float l, float w, float h)
délka = l;
šířka = w;
výška = h;
// Přetížení operátoru - operátor předpony "++"
void operator ++ ()
délka ++;
šířka ++;
výška ++;
// Přetížení operátoru - operátor postfixu „++“
void operator ++ (int)
délka ++;
šířka ++;
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ýstup();
mySquare_Box1 ++;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.výstup();
++mySquare_Box1;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.výstup();
návrat 0;
Příklad 2: Přetížení unárního operátora (2)
Toto je další příklad, ve kterém si ukážeme, jak může být unární operátor v C přetížen++. Definovali jsme třídu „Square_Box“ a veřejné funkce „operator - ()“ a „operator - (int)“, abychom přetížili operátory prefixu i postfixu dekrementu. Ve funkci „main ()“ jsme vytvořili objekt „mySquare_Box1“. Poté jsme na objekt „mySquare_Box1“ použili operátory prefixu a postfixu.
#zahrnoutpomocí jmenného prostoru std;
třída Square_Box
soukromé:
délka plováku;
šířka plováku;
výška plováku;
veřejnost:
Square_Box ()
Square_Box (float l, float w, float h)
délka = l;
šířka = w;
výška = h;
// Operator Overloading - "-" operátor předpony
neplatný operátor - ()
délka--;
šířka--;
výška--;
// Operator Overloading - "-" operátor postfixu
void operator - (int)
délka--;
šířka--;
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ýstup();
mySquare_Box1--;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.výstup();
--mySquare_Box1;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.výstup();
návrat 0;
Příklad 3: Přetížení binárního operátoru
Nyní se podíváme na příklad přetížení binárního operátoru. Syntaxe přetížení binárního operátoru se poněkud liší od přetížení unárního operátoru. V tomto příkladu přetížíme operátor „+“ a přidáme dva objekty „Square_Box“.
#zahrnoutpomocí jmenného prostoru std;
třída Square_Box
soukromé:
délka plováku;
šířka plováku;
výška plováku;
veřejnost:
Square_Box ()
Square_Box (float l, float w, float h)
délka = l;
šířka = w;
výška = h;
// Přetížení operátora - operátor "+"
Square_Box operator + (const Square_Box & obj)
Square_Box temp;
tepl.délka = délka + obj.délka;
tepl.width = width + obj.šířka;
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ýsledek;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.výstup();
cout << "Dimensions of mySquare_Box2 = " << endl;
mySquare_Box2.výstup();
result = mySquare_Box1 + mySquare_Box2;
cout << "Dimensions of resultant square box = " << endl;
výsledek.výstup();
návrat 0;
Příklad 4: Přetížení relačního operátora
Nyní se podíváme na příklad přetížení relačních operátorů. Syntaxe přetížení relačních operátorů je stejná jako syntaxe přetížení binárního operátoru. V tomto příkladu přetížíme „<” and “>”Operátory, které se použijí na objekty“ Square_Box ”.
#zahrnoutpomocí jmenného prostoru std;
třída Square_Box
soukromé:
délka plováku;
šířka plováku;
výška plováku;
veřejnost:
Square_Box ()
Square_Box (float l, float w, float h)
délka = l;
šířka = w;
výška = h;
// Přetížení operátora - "<" operator
operátor bool < (const Square_Box& obj)
if (délka < obj.length)
návrat true;
jiný
návrat false;
// Operator Overloading - ">" operátor
bool operator> (const Square_Box & obj)
if (délka> obj.délka)
návrat true;
jiný
návrat false;
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 výsledek;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.výstup();
cout << "Dimensions of mySquare_Box2 = " << endl;
mySquare_Box2.výstup();
result = mySquare_Box1 < mySquare_Box2;
cout << "mySquare_Box1 < mySquare_Box2 = " << result < mySquare_Box2;
cout < mySquare_Box2 = " << result << endl;
návrat 0;
Závěr
C ++ je univerzální a flexibilní programovací jazyk, který je široce používán v různých doménách. Tento programovací jazyk podporuje polymorfismus v době kompilace i za běhu. Tento článek vám ukázal, jak provést přetížení operátora v C++. Toto je velmi užitečná funkce C ++, která přidává další úsilí, aby vývojář definoval operátor pro přetížení, ale rozhodně usnadňuje život uživateli třídy.