Kako implementirati preopterećenje operatora u c ++?



U ovom ćemo članku razmotriti još jedan objektno orijentirani koncept koji olakšava rukovanje rukovateljem. Učili bismo preopterećenje operatora na C ++.

U ovom ćemo članku istražiti još jedan objektno orijentirani koncept koji olakšava rukovanje rukovateljem. Odnosno, ulazimo u detalje Operatora Preopterećenje u C ++ . U ovom će članku biti obrađeni sljedeći smjerovi,

Dakle, krenimo s ovim člankom o Preopterećenju operatora u C ++.





Preopterećenje u C ++

Ako stvorimo dva ili više članova iste klase koji imaju isto ime, ali se razlikuju po broju ili vrsti parametra, to je poznato kao preopterećenje C ++.



U C ++-u možemo preopteretiti:

  • metode
  • konstruktori
  • indeksirana svojstva

To je zato što ovi članovi imaju samo parametre.

Nastavljamo s ovim člankom o Preopterećenju operatora u C ++.



Vrste preopterećenja u C ++

  • Preopterećenje funkcije
  • Preopterećenje operatera

Preopterećenje - Preopterećenje operatora u C ++ - Edureka

Nastavljamo s ovim člankom o Preopterećenju operatora u C ++.

Zašto se koristi preopterećenje operatera?

C ++ programi se mogu pisati bez znanja preopterećenja operatera. Tada se i programeri duboko koriste za rad operatora kako bi program učinili intuitivnim. Na primjer,

Kod možemo zamijeniti kao:

izračun = zbroji (podijeli (a, b), pomnoži (a, b))

Za jednadžbu

izračun = (a / b) + (a * b)

Preopterećenje operatora pruža jednostavan i lak način za razvoj novih definicija za većinu operatora u C ++. Uz dovoljno znanja gotovo možemo stvoriti vlastiti novi jezik kreativnom uporabom tehnika i tehnika preopterećenja operatora. U C ++ možemo preopteretiti sve operatore, osim sljedećeg:
● Operator opsega (: :)
● Operator veličine (Sizeof)
● odabir člana (.)
● odabir pokazivača člana (*)
● trokraki operator (? :)

Sintaksa preopterećenja operatora

return_type ime_klase:: operater op (argument_list) {// tijelo funkcije}

Gdje je vrsta povrata vrsta vrijednosti koju funkcija vraća. class_name je ime klase.

Nastavljamo s ovim člankom o Preopterećenju operatora u C ++.

Implementacija preopterećenja operatora u C ++

Funkcija operatora mora biti ili nestatična (funkcija člana) ili funkcija prijatelja da bi se preopteretila. Funkcija preopterećenja operatora može se primijeniti na funkciju člana ako je lijevi operand objekt te klase, ali ako je lijevi operand drugačiji, tada se funkcija preopterećenja operatora mora definirati kao funkcija koja nije član.
Funkcija preopterećenja operatora može biti funkcija prijatelja ako zahtijeva pristup privatnim i zaštićenim članovima klase. Na primjer, operator op je operacijska funkcija gdje je op operator koji je preopterećen, a operator je ključna riječ. Preopterećenje operatora može se postići implementacijom funkcije koja može biti funkcija člana, funkcija nečlana ili funkcija prijatelja.

Koja je razlika između funkcija operatora i normalnih funkcija?

Funkcije operatora jednake su normalnim funkcijama. Jedina je razlika u tome što je naziv funkcije operatora uvijek ključna riječ operatora iza koje slijedi simbol operatora, a funkcije operatora pozivaju se kada se koristi odgovarajući operator.

Nastavljamo s ovim člankom o Preopterećenju operatora u C ++.

Vrste pristupa preopterećenja

Preopterećenje operatora može se izvršiti pomoću tri pristupa, to su

  • Preopterećenje unarnog operatora.
  • Preopterećenje binarnog operatora.
  • Preopterećenje binarnog operatora pomoću funkcije prijatelja.

Nastavljamo s ovim člankom o Preopterećenju operatora u C ++.

Preopterećenje unary operatora

Razmotrimo unarni operator ‘-‘. Operator minus kada se koristi kao unarni zahtijeva samo jedan operand. Znamo da ovaj operator mijenja znak operanda kada se primijeni na osnovnu varijablu podataka. Pogledajmo kako preopteretiti ovaj operator tako da se može primijeniti na objekt na isti način kao što je primijenjen na varijablu int ili float. Unarni minus, kada se primijeni na objekt, trebao bi umanjiti svaku od njegovih stavki podataka.

Primjer:

#include koristeći prostor imena std class Height {public: // Objekti člana int feet, inch // Konstruktor za inicijalizaciju vrijednosti objekta Height (int f, int i) {feet = f inch = i} // Operator preopterećenja (-) u izvršiti dekrement // rad Height objekta void operator- () {feet-- inch-- cout<< 'Feet & Inches after decrement: ' << feet << ' ' ' << inch <

Izlaz:

Obrazloženje:
U gornjem primjeru, preopterećujemo unarni operator da bi izvršio dekretiranje u dvije varijable klase Height. Dva parametra prosljeđujemo konstruktoru i njihove vrijednosti spremaju u varijablu stopa i inča. Tada definiramo funkciju preopterećenja operatora (void operator- ()
) u kojem se dvije varijable dekrementiraju jednim položajem.
Kada napišemo -h1, on poziva funkciju preopterećenja operatora i smanjuje vrijednosti proslijeđene konstruktoru.

Nastavljamo s ovim člankom o Preopterećenju operatora u C ++.

Preopterećenje binarnog operatora

To je preopterećenje operatora koji radi na dva operanda. Uzmimo isti primjer klase Height, ali ovaj put dodajte dva objekta Height h1 i h2.

Primjer:

#include using space names std class Height {public: int feet, inch Height () {feet = 0 inch = 0} Height (int f, int i) {feet = f inch = i} // Operator preopterećenja (+) za izvođenje dodavanje // objekta s dvije udaljenosti pomoću binarnog operatora Operator visine + (Visina & d2) // Pozovite referencom {// Stvorite objekt za vraćanje Visina h3 // Izvršite dodavanje stopa i inča h3.feet = stope + d2.feet h3. inch = inch + d2.inch // Vrati rezultirajući povrat predmeta h3}} int main () {Visina h1 (3, 7) Visina h2 (6, 1) Visina h3 // Koristi preopterećeni operator h3 = h1 + h2 cout<< 'Sum of Feet & Inches: ' << h3.feet << ''' << h3.inch << endl return 0 } 

Izlaz:

Obrazloženje:
Operator visine + (Visina & h2), ovdje return_type funkcije je class Height, tako da vraća objekt h3 klase Height. U retku h3 = h1 + h2, h1 poziva funkciju operatora svojih klasa objekata i uzima h2 kao parametar, a zatim primjenjujemo h3.feet = stope + d2.feet i h3.inch = inč + d2.inch koji pohranjuje zbroj vrijednosti varijabli stopa i inč u varijablama povezanim s objektom h3.
Kada se izjava ‘h3 = h1 + h2’ poziva na funkciju preopterećenu operatorom, objekt h1 je preuzeo odgovornost za pozivanje funkcije i h2 igra ulogu argumenta koji se prenosi funkciji. Gornja izjava o pozivu ekvivalentna je h3 = h1.operator + (h2), stoga se članu podataka h2 pristupa izravno, a članu podataka h2 (koji se predaje kao argument) koristi točka operater.

Pravila za preopterećenje operatera

nadjačati u odnosu na preopterećenje c ++
  • Samo postojeći operatori mogu se preopteretiti, a novi operatori ne mogu preopteretiti
  • Preopterećeni operator mora sadržavati najmanje jedan operand korisnički definirane vrste podataka.
  • Ne koristimo funkciju prijatelja za preopterećenje određenih operatora. Međutim, funkcije člana mogu se koristiti za preopterećenje tih operatora.
  • Kad su unarni operatori preopterećeni funkcijom člana, oni ne uzimaju eksplicitne argumente, ali ako su preopterećeni funkcijom prijatelja, uzimaju jedan argument.
  • Kada su binarni operatori preopterećeni funkcijom člana, oni uzimaju jedan eksplicitni argument, a ako su preopterećeni funkcijom prijatelja, uzimaju dva eksplicitna argumenta.

Tako smo došli do kraja ovog članka o 'Preopterećenju operatora u C ++'. Ako želite saznati više, pogledajte Java Training tvrtke Edureka, pouzdane tvrtke za internetsko učenje. Edureka tečajevi su dizajnirani da vas osposobe za osnovne i napredne Java koncepte, zajedno s raznim Java okvirima poput Hibernate & Spring.

Imate pitanje za nas? Molimo vas da ga spominjete u odjeljku za komentare ovog bloga i javit ćemo vam se što je prije moguće.