C pre zaciatocnika
Este sa chcem spytat ci ako zaciatocnik mam ist hned do c++ alebo sa mam zosnamit aj s obycajnym c. O tych jazykoch este vela neviem, tak kazda rada dobra. Mam skusenosti len s pascalom a delphi.
Pre pridávanie komentárov sa musíte prihlásiť.
Btw. najprv. treba vedieť C, pascal a delphi ti je nahovno. Dá sa povedať, že C++ oproti C je len nejaký pridaný syntax pre kompilátor ako constructors/destructors, access specifiers a podobne. OO orientované veci sú potom až V-TABLEs. Anyway, aj prvé 'prekladače' C++ len dosť jednoducho kontrolovali a prevádzali C++ kód na C.
Inak kniha je aj preložená a mala by sa dať zohnať pod názvom Myslíme v jazyku C++ I a II.
potom sa treba naucit programovat objektovo. c++ je dost zlozity jazyk, takze by som kludne zvazil napr. javu. tam sa lahko naucis OO princip a potom sa mozes vratit k c++ a vybrat si z toho jazyka iba co potrebujes.
Btw. C++ je multiparadigm jazyk. Ja ho používam pri bežnom proceduránom programovaní (lebo OO je to vraj až pri použití polymorph...) mikrokontrolérov a kludne aj spolu s inline asm.
access specifiers!
this pointer a member funkcie
netreba písať typedef pri struct-och
V podstate ide o efektívnejší (a pre mňa krajší) syntax... generovaný asm býva aj tak rovnaký.
Nevidím dovod, prečo by ta binárka mala byť vačšia. Sám Eckel to vo svojej knihe rozoberá. Ak človek nepoužíva nejaký <dynamic_cast> a podobné fancy stuff, ten generovaný kód je rovnaký.
Napr. funkcia ktorá uloží niečo do struct, potrebuje jej pointer. Či sa predá "tajne" ako this pointer, alebo explictine, tak či tak medzi stack a frame pointerom proste bude jedno miesto obsahujúce tento pointer, len syntax je iný.
Skompiloval som ho a potom som len prepísal prípony .c na .cpp, modifikoval Makefile a skompiloval som ho znovu. C binárka mala 5125 B, C++ mala 4999B. Tak som sa rozhodol skontrovať.
V makefile som zmenil len dve veci !!! avr-gcc za avr-g++ a -std=c99 za -ansi.
Takže generovaný kód je očividne iný, to máš pravdu. Len to C++ to nejak lepšie zoptimalizovalo. Použitá optimalizácia bola -Os.
Sám parameter -Os znamená optimalize primarily for size (not for speed or something else).
btw. to C++ sa mi oplatí už len pre namespaces keď už pre nič iné.