C++ programozóknak a shift operátor kiíratásra használva nem furcsa?
C++ egyik előnye az operátor túlterhelés.
Szerintem senkinek se furcsa, én inkább örülök neki, hogy 2 karakterből megvan a debug üzi kiírása, és az std::endl kicsűrése pedig az fflush(stdout) hívással egyenértékű.
A POSIX printf(), putc() függvények úgyszintén működnek C++ alatt is, nem kötelező az std::cout használata.
Két karakter, de olvasni is ugyanolyan könnyű? Több dolognál szerintem vesszővel elválasztva olvashatóbb.
Ha printf-et használ valaki elcsűrheti a formátum sztringet, de a kérdés egy olyan print függvényre utal ami kiírná a paramétereket megfelelően.
std::cout.operator<<(a);
std::cout.operator<<(b);
Hmm...
std::cout << a;
vagy
System.out.println(a) esetleg Console.WriteLine(a)?
Hát, szerintem ezutóbbi kettő kevésbé szép. Nem a háború és békét akarjuk újraírni :-))
Szóval nem furcsa, mert C++ programozóknak az operátor ugyanúgy egy függvény, ami csinálhat bármit :-)
>> Szóval nem furcsa, mert C++ programozóknak az operátor ugyanúgy egy függvény, ami csinálhat bármit
Az esetek 98%-ban az operátorok nem jelentenek ennyire mást. Mármint nekem a << shiftelést jelent alapból. És eléggé exotikus kódot lehet összehozni, ha valaki össze-vissza operátorokat ír felül függvények írása helyett.
Én értem a kevesebb gépelést, csak szinte mindenhol van egy függvény amit kiíratásra használsz és print*-nak hívnak.
# 5/5 Időpont ma 22:58
A C++ az összes input/output streamet "egyként kezeli", legyen az képernyő, fájl, áramfejlesztő, távíró vagy épp WC ülőke. Távíróra vagy WC ülőkére pedig hülyén hangzana az, hogy printelsz rá valamit. Ezért lett a << bevezetve.
Beolvasásnál ugyanez: Egy hangalapú inputnál hülyén hangzana a read(). :-)
"És eléggé exotikus kódot lehet összehozni, ha valaki össze-vissza operátorokat ír felül függvények írása helyett."
Nem függvény írás helyett, hanem mellett. Operátortúlterhelések egyéni osztályoknak kellenek.
Pl. Java-ban gyűlölöm, hogy egyesével meg kell írnom (és használnom) egy egyéni számtípusnak a négy alapműveletet, ahelyett hogy használnám a +-/* valamelyikét. Ne mondd, hogy nem szebb a+b-t írni a.plus(b) helyett. :-)
> Beolvasásnál ugyanez: Egy hangalapú inputnál hülyén hangzana a read(). :-)
Még jó, hogy bináris adatbeolvasásnál write/read párost kell használni. Csak a formázott (emberileg olvasható) kimenetnél/bemenetnél kellenek ezek az << és >> operátorok.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!