C ++

Přetížení operátora C ++

Přetížení operátora C ++
Tento článek poskytuje průvodce přetížením operátora v C++. Přetížení operátoru je užitečná a výkonná funkce programovacího jazyka C ++. C ++ umožňuje přetížení většiny integrovaných operátorů. V tomto kurzu použijeme několik příkladů k předvedení mechanismu přetížení operátoru.

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:

  1. Příklad 1: Přetížení unárního operátora (1)
  2. Příklad 2: Přetížení unárního operátora (2)
  3. Příklad 3: Přetížení binárního operátoru
  4. 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.

#zahrnout
pomocí 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.

#zahrnout
pomocí 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“.

#zahrnout
pomocí 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 ”.

#zahrnout
pomocí 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.

Trackpad a ukazatel myši AppyMouse na obrazovce pro tablety Windows
Uživatelé tabletů často postrádají ukazatel myši, zejména když obvykle používají notebooky. Dotykové smartphony a tablety mají mnoho výhod a jediným o...
Střední tlačítko myši nefunguje ve Windows 10
The prostřední tlačítko myši pomáhá procházet dlouhé webové stránky a obrazovky se spoustou dat. Pokud se to zastaví, budete nakonec používat klávesni...
Jak změnit levé a pravé tlačítko myši na počítači se systémem Windows 10
Je úplnou normou, že všechna zařízení počítačových myší jsou ergonomicky navržena pro praváky. K dispozici jsou však myší zařízení, která jsou speciál...