Kezdőoldal » Számítástechnika » Programozás » Ti mikor terhelitek túl az...

Ti mikor terhelitek túl az operátorokat? C++

Figyelt kérdés
Nem értem minek ha függvényekkel megoldható.
2012. márc. 24. 20:30
 1/4 anonim ***** válasza:
Azért, mert mikor van egy spéci osztályod, ami mondjuk a tört számokat szimbolikusan ábrázolja azaz számláló meg nevező van és ebből kettőt össze akarnál adni, akkor annyival jobb az hogy a + b , mint az hogy a.add(b) meg kivonásnál a.substract(b) stb.
2012. márc. 24. 20:40
Hasznos számodra ez a válasz?
 2/4 A kérdező kommentje:
De nem értem még mindig.
2012. márc. 24. 21:00
 3/4 anonim ***** válasza:

1)

Akkor ha kód olvashatóságát javítja, olyan műveletet hajt végre amit megszoktunk tőlle, az előző példánál maradva van int, float, double stb típusok melyek szám típusok. Ha csináltunk egy tört osztályt az is egy szám típus. Minden beépített számtípushoz tartozik + - / * >= == stb operátor. A tört osztályhoz is egy szám típus, logikus úgy tekintetni rá mint a többi számtípusra, logikus megírni ezeket az operátorokat ehhez az osztályhoz. Miért kivételenénk vele?

A cout is úgy működik hogy a << operátor van túlterhelve. pl.: cout << a << " "<< b << " " << c; Ha a b és c különböző típusak akkor << -ra különböző operátor eljárások hívódnak meg. Ha d egy int akkor kiírathatom az értékét cout << d, ha e egy tört típus akkor miért ne így írnám ki egyszerűen : cout << d ?

2)

Ha bizonyos template-ket írunk vagy használunk fel. Általánosan írjuk le a kódot template-be konkrét osztály nélkül, informatívabb operátorokkal, így minden eddig megírt meg eddig meg nem írt osztályon működik amin értelmezve van az adott operátor,

Az STL-ben van a pl. a map template, ami a kulcsokat rendezve tárolja, ezt csak akkor tudja ha van rendezési reláció, túl van terhelve a < oparátor az adott osztály-on.

2012. márc. 24. 23:56
Hasznos számodra ez a válasz?
 4/4 iostream ***** válasza:
Általában valóban kiváltható függvényekkel, ekkor csak simán az olvashatóság az érv. Máskor viszont nagyon körülményes lenne, például az iterátorok olyan általánosításai a mutatónak, amelyek RÁNÉZÉSRE egy tömbbe mutató mutatónak tűnnek. Tehát lehet őket dereferálni (*), rajtuk keresztül elérnu (->), léptetni (++, --), ha random access akkor még távolságot is lehet mérni (-). Ezeket általában olyan algoritmusok használják, amik templatek, és azt várják el a típusparaméterüktől, hogy ezeket biztosítsák. Mivel concept-ek nem kerültek bele az új szabványba, ezért a legegyszerűbb megoldás az, ha túlterheled az operátorokat, hogy ténylegesen ugyanúgy működjenek, mint a pointerek.
2012. márc. 25. 11:40
Hasznos számodra ez a válasz?

További kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!