Ako implementovať preťaženie operátora v c ++?



V tomto článku sa pozrieme na ďalší objektovo orientovaný koncept, ktorý uľahčuje obsluhu obsluhy. Učili by sme sa preťažovanie operátorov v C ++.

V tomto článku sa budeme venovať ešte ďalšiemu objektovo orientovanému konceptu, ktorý uľahčuje manipuláciu operátora. To znamená, že by sme sa dostali k podrobnostiam operátora Preťaženie v C ++ . V tomto článku sa budeme zaoberať nasledujúcimi ukazovateľmi,

Začnime teda týmto článkom o preťažení operátora v C ++.





Preťaženie v C ++

Ak vytvoríme dvoch alebo viacerých členov tej istej triedy, ktorí majú rovnaké meno, ale líšia sa počtom alebo typom parametra, je to známe ako preťaženie C ++.



V C ++ môžeme preťažiť:

zásobník a halda pamäte v jave
  • metódy
  • konštruktéri
  • indexované vlastnosti

Je to preto, lebo títo členovia majú iba parametre.

Ďalej v tomto článku o preťažení operátora v C ++.



Typy preťaženia v C ++

  • Preťaženie funkcií
  • Preťaženie obsluhy

Preťaženie - Preťaženie operátora v C ++ - Edureka

Ďalej v tomto článku o preťažení operátora v C ++.

Prečo sa používa preťaženie operátora?

Programy v C ++ je možné písať bez znalosti preťaženia operátorom. Programátori potom tiež hlboko využívajú obsluhu operátora, aby bol program intuitívny. Napríklad,

Kód môžeme nahradiť ako:

výpočet = pridať (rozdeliť (a, b), vynásobiť (a, b))

Pre rovnicu

výpočet = (a / b) + (a * b)

Preťaženie operátora poskytuje jednoduchý a ľahký spôsob vývoja nových definícií pre väčšinu operátorov v jazyku C ++. S dostatočnými znalosťami dokážeme tvorivým využitím techník preťažovania funkcií a operátorov takmer vytvoriť nový vlastný jazyk. V C ++ môžeme preťažiť všetkých operátorov okrem nasledujúcich:
● Operátor rozsahu (: :)
● operátor veľkosti (Sizeof)
● selektor členov (.)
● selektor ukazovateľa člena (*)
● ternárny operátor (? :)

Syntax preťaženia operátora

return_type class_name:: operator op (argument_list) {// telo funkcie}

Kde návratový typ je typ hodnoty vrátenej funkciou. class_name je názov triedy.

Ďalej v tomto článku o preťažení operátora v C ++.

Implementácia preťaženia operátora v C ++

Aby bola funkcia operátora preťažená, musí byť nestatická (členská funkcia) alebo priateľská. Funkciu preťaženia operátora je možné použiť na členskú funkciu, ak je ľavý operand objektom tejto triedy, ale ak je operand Left odlišný, potom musí byť funkcia preťaženia operátora definovaná ako nečlenská funkcia.
Funkcia preťaženia operátora sa môže stať priateľskou funkciou, ak vyžaduje prístup k súkromným a chráneným členom triedy. Napríklad operátor op je funkcia operátora, kde op je operátor preťažený a operátor je kľúčové slovo. Preťaženie operátora sa dá dosiahnuť implementáciou funkcie, ktorá môže byť buď členskou funkciou, nečlenskou funkciou alebo priateľskou funkciou.

Aký je rozdiel medzi funkciami operátora a normálnymi funkciami?

Funkcie operátora sú rovnaké ako bežné funkcie. Jediný rozdiel je v tom, že názov funkcie operátora je vždy kľúčové slovo operátora, za ktorým nasleduje symbol operátora a funkcie operátora sa volajú, keď sa použije príslušný operátor.

Ďalej v tomto článku o preťažení operátora v C ++.

Druhy prístupov preťaženia

Preťaženie operátora je možné vykonať pomocou troch prístupov

  • Preťaženie unárneho operátora.
  • Preťaženie binárneho operátora.
  • Preťaženie binárneho operátora pomocou funkcie priateľa.

Ďalej v tomto článku o preťažení operátora v C ++.

def __init __ (vlastné)

Preťaženie unárny operátor

Zvážme unárneho operátora „-“. Ak je mínusový operátor používaný ako unárne, vyžaduje iba jeden operand. Vieme, že tento operátor mení znamienko operandu, keď je aplikovaný na premennú základných údajov. Pozrime sa, ako preťažiť tento operátor, aby ho bolo možné aplikovať na objekt rovnakým spôsobom, ako sa aplikuje na premennú int alebo float. Unárne mínus, keď sa použije na objekt, by malo znížiť každú jeho údajovú položku.

Príklad:

#include using namespace std class Height {public: // Member Objects int feet, inch // Constructor to initialize the object's value Height (int f, int i) {feet = f inch = i} // Operátor preťaženia (-) na vykonať dekrementáciu // operáciu objektu výšky void operator- () {stopy-- palca-- cout<< 'Feet & Inches after decrement: ' << feet << ' ' ' << inch <

Výkon:

Vysvetlenie:
Vo vyššie uvedenom príklade preťažíme unárny operátor „-“, aby sme vykonali dekrementáciu v dvoch premenných triedy Height. Konštruktérovi odovzdáme dva parametre a ich hodnoty uložíme do premennej stopy a palce. Potom definujeme funkciu preťaženia operátora (void operator- ()
), v ktorom sú dve premenné znížené o jednu pozíciu.
Keď napíšeme -h1, zavolá funkciu preťaženia operátora a zníži hodnoty odovzdané konštruktoru.

Ďalej v tomto článku o preťažení operátora v C ++.

Preťaženie binárneho operátora

Jedná sa o preťaženie operátora pracujúceho na dvoch operandoch. Zoberme si rovnaký príklad triedy Height, ale tentokrát pridajte dva objekty Height h1 a h2.

Príklad:

#include using namespace std class Height {public: int feet, inch Height () {feet = 0 inch = 0} Height (int f, int i) {feet = f inch = i} // Operátor preťaženia (+) na vykonanie pridanie // dvoch vzdialených objektov pomocou binárneho operátora Height operátor + (Height & d2) // Volať odkazom {// Vytvorenie objektu na vrátenie Height h3 // Vykoná pridanie stôp a palcov h3.feet = nohy + d2.feet h3. inch = inch + d2.inch // Vrátiť výsledný objekt return h3}} int main () {Výška h1 (3, 7) Výška h2 (6, 1) Výška h3 // Použiť preťažený operátor h3 = h1 + h2 cout<< 'Sum of Feet & Inches: ' << h3.feet << ''' << h3.inch << endl return 0 } 

Výkon:

Vysvetlenie:
Výškový operátor + (Výška & h2), tu returns_type funkcie je trieda Height, takže vracia objekt h3 z triedy Height. V riadku h3 = h1 + h2 volá h1 operátorskú funkciu svojich objektov triedy a berie h2 ako parameter, potom použijeme h3.feet = nohy + d2.feet a h3.inch = palec + d2.inch, ktorý ukladá súčet hodnôt premenných stopy a palce v premenných spojených s objektom h3.
Keď príkaz „h3 = h1 + h2“ vyvolá funkciu preťaženú operátorom, objekt h1 prevzal zodpovednosť za vyvolanie funkcie a h2 hrá rolu argumentu, ktorý je funkcii odovzdaný. Vyššie uvedený príkaz na vyvolanie je ekvivalentný s h3 = h1.operator + (h2), takže k dátovému členu h2 sa pristupuje priamo a k dátovému členu h2 (ktorý sa odovzdáva ako argument) sa pristupuje pomocou bodkového operátora.

Pravidlá preťaženia operátora

  • Preťažiť sa dajú iba existujúce operátory a nemožno preťažiť nové operátory
  • Preťažený operátor musí obsahovať najmenej jeden operand používateľom definovaného dátového typu.
  • Na preťaženie určitých operátorov nepoužívame funkciu priateľa. Avšak členské funkcie je možné použiť na preťaženie týchto operátorov.
  • Keď sú unárne operátory preťažené členskou funkciou, neberú žiadne explicitné argumenty, ale ak sú preťažené funkciou friend, vezmú jeden argument.
  • Keď sú binárne operátory preťažené členskou funkciou, vezmú jeden explicitný argument a ak sú preťažené prostredníctvom priateľskej funkcie, vezmú dva explicitné argumenty.

Tak sme sa dostali na koniec tohto článku o „Preťažení operátora v C ++“. Ak sa chcete dozvedieť viac, vyskúšajte Java Training by Edureka, dôveryhodná online vzdelávacia spoločnosť. Edureka’s kurz je navrhnutý tak, aby vás vyškolil pre základné aj pokročilé koncepty Java spolu s rôznymi rámcami Java, ako je Hibernate & Spring.

Máte na nás otázku? Uveďte to prosím v sekcii komentárov tohto blogu a my sa vám ozveme čo najskôr.