abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 01:55 | Komunita

    24. září 2024 budou zveřejněny zdrojové kódy přehrávače Winamp.

    Ladislav Hagara | Komentářů: 1
    včera 23:33 | Nová verze

    Google Chrome 125 byl prohlášen za stabilní. Nejnovější stabilní verze 125.0.6422.60 přináší řadu oprav a vylepšení (YouTube). Podrobný přehled v poznámkách k vydání. Opraveno bylo 9 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.

    Ladislav Hagara | Komentářů: 0
    včera 21:11 | Nová verze

    Textový editor Neovim byl vydán ve verzi 0.10 (𝕏). Přehled novinek v příspěvku na blogu a v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    včera 20:55 | Nová verze

    Byla vydána nová verze 6.3 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Přehled změn v příslušném seznamu. Tor Browser byl povýšen na verzi 13.0.15.

    Ladislav Hagara | Komentářů: 0
    včera 13:33 | IT novinky

    Dnes ve 12:00 byla spuštěna první aukce domén .CZ. Zatím největší zájem je o dro.cz, kachnicka.cz, octavie.cz, uvycepu.cz a vnady.cz [𝕏].

    Ladislav Hagara | Komentářů: 2
    včera 13:22 | Nová verze

    JackTrip byl vydán ve verzi 2.3.0. Jedná se o multiplatformní open source software umožňující hudebníkům z různých částí světa společné hraní. JackTrip lze instalovat také z Flathubu.

    Ladislav Hagara | Komentářů: 0
    včera 12:22 | Pozvánky

    Patnáctý ročník ne-konference jOpenSpace se koná 4. – 6. října 2024 v Hotelu Antoň v Telči. Pro účast je potřeba vyplnit registrační formulář. Ne-konference neznamená, že se organizátorům nechce připravovat program, ale naopak dává prostor všem pozvaným, aby si program sami složili z toho nejzajímavějšího, čím se v poslední době zabývají nebo co je oslovilo. Obsah, který vytváří všichni účastníci, se skládá z desetiminutových

    … více »
    Zdenek H. | Komentářů: 0
    včera 03:11 | Nová verze

    Program pro generování 3D lidských postav MakeHuman (Wikipedie, GitHub) byl vydán ve verzi 1.3.0. Hlavní novinkou je výběr tvaru těla (body shapes).

    Ladislav Hagara | Komentářů: 5
    15.5. 23:11 | Bezpečnostní upozornění

    Intel vydal 41 upozornění na bezpečnostní chyby ve svých produktech. Současně vydal verzi 20240514 mikrokódů pro své procesory řešící INTEL-SA-01051, INTEL-SA-01052 a INTEL-SA-01036.

    Ladislav Hagara | Komentářů: 0
    15.5. 16:22 | IT novinky

    Společnost Raspberry Pi patřící nadaci Raspberry Pi chystá IPO a vstup na Londýnskou burzu.

    Ladislav Hagara | Komentářů: 0
    Podle hypotézy Mrtvý Internet mj. tvoří většinu online interakcí boti.
     (74%)
     (5%)
     (10%)
     (10%)
    Celkem 292 hlasů
     Komentářů: 16, poslední 14.5. 11:05
    Rozcestník

    maly kviz z C++ - vysvetleni

    11.3.2008 18:36 | Přečteno: 1142× | programovani

    Tak slibovane vysvetleni minuleho zapisku

    Prvni pomerne casta chyba (i z diskuze to bylo videt) je, ze si lide pletou ciste virtualni(dale cv) metodu s interfacem. I kdyz se cv metoda pouziva casto v definici interfacu, tak se da pouzit i jinde. Cv metoda je proste normalni metoda, kde jediny co ma navic je nutnost ji predefinovat v predkovi.

    No a kde se to pouziva? Napriklad vsude, kde se chcete vyhnout duplicite kodu, kdy zakladni virtualni fce udela cast prace, ale to klicovy se udela az v potomkovi a sama o sobe nema ta metoda smysl (v horsim pripade udela jen cast prace a tvari se ze udelala vsechno). Mozna nekdo namitne ze to same lze udelat v predkovi s protected metodou s jinym nazvem, ale tim se zanasi dalsi slozitost(ve smyslu porozumeni kodu) pro pripadneho ctenare kodu.

    No a v jednom doporuceni na netu co jsem cetl je dokonce napsano, ze by to telo melo byt vzdy, aspon s vyhozenim vyjimky. Jako protipriklad bylo ladeni kodu, ktery se proti tomu povede trikem zkompilovat (priznam se, ze sem to nezvladl). Ale znam z wine jakej je boj hledat funkci, kterou wine vubec nema, protoze to je volani NULL a hledat to je peklo, zvlaste kdyz nemate ten stroj u sebe, ale delate support.

    Nemam patent na rozum, tak uvitam jakekoliv postrehy k tematu v diskuzi a treba se necemu dalsimu priucim

           

    Hodnocení: 100 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    11.3.2008 18:57 H4wk | skóre: 9 | blog: H4wkuv_blog
    Rozbalit Rozbalit vše Re: maly kviz z C++ - vysvetleni
    je nutnost ji predefinovat v predkovi. Spis v potomkovi ne?
    Myslim, ze uz chapu jak by se to dalo pouzit, ja si vetsinou dam jako abstraktni tu metodu, kterou vubec nedefinuju. Vzdycky jsem to =0 chapal tak, ze "tuhle funkci at si kazdy potomek naimplementuje sam", ne jako "strcim to treba sem at je trida abstraktni".
    Korespondenční Seminář z Programování - Pro každého středoškoláka, který to s programováním myslí vážně.
    11.3.2008 19:06 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
    Rozbalit Rozbalit vše Re: maly kviz z C++ - vysvetleni
    No a kde se to pouziva? Napriklad vsude, kde se chcete vyhnout duplicite kodu, kdy zakladni virtualni fce udela cast prace, ale to klicovy se udela az v potomkovi a sama o sobe nema ta metoda smysl (v horsim pripade udela jen cast prace a tvari se ze udelala vsechno). Mozna nekdo namitne ze to same lze udelat v predkovi s protected metodou s jinym nazvem, ale tim se zanasi dalsi slozitost(ve smyslu porozumeni kodu) pro pripadneho ctenare kodu.
    No teda jestli tomuhle rikas zajimave dusledky, tak dobry :-D IMHO je pro ctenare ciste virtualni metoda s telem dostatecny sok.
    Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
    11.3.2008 19:12 qk | skóre: 15 | blog: qk_develop
    Rozbalit Rozbalit vše Re: maly kviz z C++ - vysvetleni
    Nejzajimavejsi dusledek melo byt ten kod a jak ho slinkovat aby spatne detekovatelne spadl, ale nejak se nepovedlo (teda krome urciteho poruseni binarni kompatibility sdilenych knihoven, coz neni zrovna dobry).
    No pro neznaleho ctenare verim ze to sok muze byt...ale tak staci pouzit trochu vic trikoveji templaty a pulka lidi netusi co se tam deje.
    11.3.2008 19:38 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
    Rozbalit Rozbalit vše Re: maly kviz z C++ - vysvetleni
    Templaty jsou dost pohoda, jenom to proste neni proceduralni programovani.
    Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
    11.3.2008 21:27 zde | skóre: 9 | blog: Linuch | Brno
    Rozbalit Rozbalit vše Re: maly kviz z C++ - vysvetleni
    > IMHO je pro ctenare ciste virtualni metoda s telem dostatecny sok.

    To ze je metoda ciste virtualni znamena jedinnou vec: prekladac do VMT dane tridy "defaultne" vrazi odkaz na funkci, ktera vypise runtime error. To jestli se to prerazi az v subclassu nebo rovnou v implementaci base classu je logicky naprosto jedno. C++ je proste okridlene prase.
    Táto, ty de byl? V práci, já debil.
    11.3.2008 22:28 depka
    Rozbalit Rozbalit vše Re: maly kviz z C++ - vysvetleni
    abstrakni metoda se v bazove(tudiz taky abstraktni) tride nijak neprerazi, jeji implemetace se vubec v nicem neuplatnuje
    12.3.2008 10:38 zde | skóre: 9 | blog: Linuch | Brno
    Rozbalit Rozbalit vše Re: maly kviz z C++ - vysvetleni
    > abstrakni metoda se v bazove(tudiz taky abstraktni) tride nijak neprerazi,

    Sorry, špatně jsem si to přečetl. C++ je ještě dojebanější než jsem se obával.

    > jeji implemetace se vubec v nicem neuplatnuje

    Právě že uplatňuje. Třída A má ve svém interfacu nadefinováno, že obsahuje jednu pure virtual funkci, a proto překladač odmítne vytvořit její instanci. To mu ale nebrání tu pure funkci v base classu implementovat, a dokonce i staticky zavolat. Opravdu netuším k čemu může být tahle zvrhlost dobrá- máš třídu kde MUSÍŠ overridovat virtuální funkci, a přitom ten base class už poskytuje nějakou její defaultní implementaci, kterou můžeš zavolat. Inu když někomu přišlo roztomilé psát cout << nl; nelze se divit ničemu.
    Táto, ty de byl? V práci, já debil.
    12.3.2008 10:50 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
    Rozbalit Rozbalit vše Re: maly kviz z C++ - vysvetleni
    Sorry, špatně jsem si to přečetl. C++ je ještě dojebanější než jsem se obával.
    Znas neco lepsiho? :-D Ale ne, jenom tak rypu, kazdy si sam kope svuj hrob. Mne napriklad od C++ nic neodtrhne. Jenom se ted musim konecne poradne naucit nejaky skriptovaci jazyk.
    Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
    12.3.2008 11:26 zde | skóre: 9 | blog: Linuch | Brno
    Rozbalit Rozbalit vše Re: maly kviz z C++ - vysvetleni
    > Znas neco lepsiho?

    Python, Ruby, Perl, .NET, Delphi, dokonce i Java nebo Visual Basic :)

    > Mne napriklad od C++ nic neodtrhne. Jenom se ted musim konecne poradne naucit nejaky skriptovaci jazyk.

    Signifikantní korelace, řekl bych :)
    Táto, ty de byl? V práci, já debil.
    12.3.2008 11:52 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
    Rozbalit Rozbalit vše Re: maly kviz z C++ - vysvetleni
    Signifikantní korelace, řekl bych :)
    Skriptovaci jazyk potrebuji pro rychle prototypovani (radove minuty).
    Python, Ruby, Perl, .NET, Delphi, dokonce i Java nebo Visual Basic :)
    Jedine co z toho neznam je Visual Basic. V Delphi jsem dlouho programoval a uz nikdy vic, ani to neumi spravne vyhodnocovat podminky (if ((index<size) && (array[index] != 0)) je v delphi nutne rozdelit do dvou ifu). Java je fajn jazyk pro slabe programatory, ale v podstate se v tom neda psat nic velkeho (pokud to neni serverova zalezitost). .NET je mimo muj zaber. Ve skritpovacich jazycich delam zasadne jenom prototypy a systemove skripty.
    Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
    12.3.2008 12:06 zde | skóre: 9 | blog: Linuch | Brno
    Rozbalit Rozbalit vše Re: maly kviz z C++ - vysvetleni
    Nojo, to striktní vyhodnocování výrazů v Delphi bude asi dědictví po Pascalu... Ale aspoň jsou tam na rozdíl od Javy nebo C++ pořádně udělaný properties, kód je kompaktní a pěkně se čte. Ve skriptovacích jazycích se dají psát i větší systémy. Pro vysokoúrovňové věci (gui, aplikační logika, zpracování textu) je režie opravdu zcela minimální, a dynamické typování je neskutečně užitečná a příjemná věc.
    Táto, ty de byl? V práci, já debil.
    12.3.2008 12:19 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
    Rozbalit Rozbalit vše Re: maly kviz z C++ - vysvetleni
    Jo, properties mi chybi, to uznavam.
    Pro vysokoúrovňové věci (gui, aplikační logika, zpracování textu) je režie opravdu zcela minimální, a dynamické typování je neskutečně užitečná a příjemná věc.
    No a tomu se rika prototypovani. Program se napise ve skriptovacim jazyku a narocne casti se prepisou do C/C++.
    Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
    12.3.2008 12:10 Ignor
    Rozbalit Rozbalit vše Re: maly kviz z C++ - vysvetleni
    ani to neumi spravne vyhodnocovat podminky (if ((index <size) && (array[index] != 0)) je v delphi nutne rozdelit do dvou ifu)
    To není pravda. Ani u Turbo Pascalu to není pravda. Defaultní bylo "líné" vyhodnocování a přepínačem šlo zapnout to druhé (nějaké to {$neco+} ve zdrojáku).
    Jakub Hájek avatar 12.3.2008 13:53 Jakub Hájek | skóre: 14 | blog: zamek | Praha
    Rozbalit Rozbalit vše Re: maly kviz z C++ - vysvetleni
    Ty jo teď fakt nevím. Tuším že ta direktiva byla {$B+} a defaultně to imho bylo právě s tím plus, coź je úplné vyhodnocovaní. A o to líné si musel explicitně poprosit tím {$B-}.

    Ale dost možná kecám, pascal a delphi jsem dlouho neviděl.
    Teprve tehdy, až nebudeme mít co ztratit, budeme opravdu svobodní.
    Luboš Doležel (Doli) avatar 12.3.2008 13:36 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
    Rozbalit Rozbalit vše Re: maly kviz z C++ - vysvetleni
    Python, Ruby, Perl, .NET, Delphi, dokonce i Java nebo Visual Basic
    Kromě té Javy samé skriptovací věci nebo věci na hraní.
    13.3.2008 12:20 LS_999
    Rozbalit Rozbalit vše Re: maly kviz z C++ - vysvetleni
    Hmmm, uz vidim jak v tomhle pises ovladace anebo cpes ten kod do nejakeho jednocipu... Vsichni programuji "high level" a pak to stoji za h**** - mezi zmacknutim tlacitka a reakci pristroje se pak clovek naceka... Ne ze bych mel neco proti Pythonu, Jave atd., naopak, ale i kdyz je to trendy, OPRAVDU SE TO NEDA POUZIT NA VSECHNO.
    11.3.2008 21:50 PMD
    Rozbalit Rozbalit vše Re: maly kviz z C++ - vysvetleni
    A tihle odborníci potom říkají, že Java je špatný jazyk, protože to v ní nejde;)
    11.3.2008 22:11 depka
    Rozbalit Rozbalit vše Re: maly kviz z C++ - vysvetleni
    nejde co? ta definice abstraktni metody nema vubec zadny vyznam, muzes ji akorat explicitne zavolat pokud chces
    12.3.2008 10:56 PMD
    Rozbalit Rozbalit vše Re: maly kviz z C++ - vysvetleni
    Definice abstraktní metody je prostě krystalická chyba v návrhu a mně osobně vyhovuje, když programovací jazyk prasárny nepodporuje (a tím omezuje bastlíře, kteří pak ovšem křičí, že je "nedokonalost" toho jazyka omezuje v rozletu). Ale nic ve zlém, každému co jeho jest.
    11.3.2008 22:44 qk | skóre: 15 | blog: qk_develop
    Rozbalit Rozbalit vše Re: maly kviz z C++ - vysvetleni
    No nevim jestli to bylo mireny na mne, ale muzu rict ze ja rozhodne vyvijim velmi ruznorode veci a pouzivam jazyky dle potreby od asm/C, pres C++ na vetsi systemovy az po javu na projekty v rady desitek tisic LOC. Jinak toto samozrejme ma odlisne vyznamy pouziti. V jave abstract hodne souvisi s interfaci, kdy se pouziva pro tridy, ktere definuji pouze cast interfacu a zbytek daji jako abstraktni. Tady se ale da vsimnout ze cilem techto castecne implementovanych trid je take se vyhnout duplicite kodu (coz delaji i tela u ciste virtualnich funkci) Akorat to ma trochu jine vyznamy, protoze ty jazyky maji jine cile.
    12.3.2008 10:44 zde | skóre: 9 | blog: Linuch | Brno
    Rozbalit Rozbalit vše Re: maly kviz z C++ - vysvetleni
    Java není vyloženě špatný jazyk. Jen to není dobrý jazyk, protože nepřináší nic dobrého. Programy v Javě nejsou ani rychlé, ani portabilní, ani (když přičteme JRE) krátké, a díky ukecanosti knihoven se špatně čtou.
    Táto, ty de byl? V práci, já debil.
    rADOn avatar 12.3.2008 10:52 rADOn | skóre: 44 | blog: bloK | Praha
    Rozbalit Rozbalit vše Re: maly kviz z C++ - vysvetleni
    Ne, Java je spatny jazyk protoze jsou z ni odstraneny sikovne konstrukce jen proto, ze existuje sance ze se s nimi nejaky pitomec muze strelit do nohy.
    "2^24 comments ought to be enough for anyone" -- CmdrTaco
    12.3.2008 10:57 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
    Rozbalit Rozbalit vše Re: maly kviz z C++ - vysvetleni
    To mi pripomelo:
    "C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off." -- Bjarne Stroustrup
    Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
    12.3.2008 10:59 PMD
    Rozbalit Rozbalit vše Re: maly kviz z C++ - vysvetleni
    A C++ je "špatný" jazyk, protože ty konstrukce obsahuje a v naprosto každé učebnici tě od nich odrazují, což ovšem neodradí programátory;)
    12.3.2008 11:03 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
    Rozbalit Rozbalit vše Re: maly kviz z C++ - vysvetleni
    Problem je v tom ze ty konstrukce jsou uzitecne. Sice je pouzijes naprosto vyjimecne, ale uzitecne jsou. Konkretne tohle je sice zbytecnost, ale zase to neni nebezpecna konstrukce, ktera by nejak spatnym zpusobem ovlivnovala funkcnost programu.
    Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
    12.3.2008 11:37 PMD
    Rozbalit Rozbalit vše Re: maly kviz z C++ - vysvetleni
    Nejsem nějaký militantní odpůrce pluska, ale mám s ním své (vesměs špatné) zkušenosti, takže si dovolím oponovat:

    a) ty užitečné konstrukce jsou možná potřeba pro rychlé řešení, ale v ideálním případě by se měl programátor spíš zamyslet nad svým návrhem.

    b) ty užitečné konstrukce jsou možná užitečné tobě, ale ten, co to bude luštit a udržovat, tě prokleje;)
    12.3.2008 11:58 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
    Rozbalit Rozbalit vše Re: maly kviz z C++ - vysvetleni
    a) ty užitečné konstrukce jsou možná potřeba pro rychlé řešení, ale v ideálním případě by se měl programátor spíš zamyslet nad svým návrhem.
    Ty uzitecne konstrukce jsou potreba pro to aby nebylo nutne hackovat jazyk. Porovnej si hardcore kod v Cecku a C++. Nebo jeste lip to porovnej s hardcore kodem v Jave.
    b) ty užitečné konstrukce jsou možná užitečné tobě, ale ten, co to bude luštit a udržovat, tě prokleje;)
    Proc by mne proklinal? Samozrejme kdyz to bude nekdo, kdo neumi C++, tak asi ano, ale ten mne bude proklinat za cokoliv, protoze proste neumi C++.
    Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
    12.3.2008 12:49 PMD
    Rozbalit Rozbalit vše Re: maly kviz z C++ - vysvetleni
    a) Co je prosímtě hardcore kód? Nechceš doufám psát jádro OS v Javě, že ne?

    b) Oni jsou i programátoři, kteří musí číst kód po ostatních. Pokud se nechováš jako člen týmu, ale jako obfuscator, nebudou tě mít ostatní rádi.
    12.3.2008 12:56 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: maly kviz z C++ - vysvetleni
    Co je prosímtě hardcore kód? Nechceš doufám psát jádro OS v Javě, že ne?
    Proč ne, i takoví jsou. A nastojte, jsou i lidi, co píšou OS v Adě :-) (Nevím teda, jaký je aktuální stav AdaOS, když jsem se o to naposled zajímal, vypadalo to poněkud mrtvě.)
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    12.3.2008 13:23 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
    Rozbalit Rozbalit vše Re: maly kviz z C++ - vysvetleni
    Hardcore kod je u mne libovolny od ktereho se chce vic nez jenom aby "nejak" fungoval. Napr. aby byl rychly, bezpecny, portabilni, etc...
    Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
    12.3.2008 15:03 PMD
    Rozbalit Rozbalit vše Re: maly kviz z C++ - vysvetleni
    Jo takhle, tak to jsme asi každej na jiný planetě:) Pas.
    12.3.2008 21:57 Messa | skóre: 39 | blog: Messa
    Rozbalit Rozbalit vše Re: maly kviz z C++ - vysvetleni
    To je sice zajímavý, ale stejně si myslím, že je to prasárna :-) Pevně doufám, že to nikdy nebudu muset napsat a ještě víc doufám, že nikdy nic takového nebudu muset po někom luštit - tento trik teď už sice znám, ale když ho někdo používá, pak bůhví co používá ještě (třeba si myslel že píše "hardcore" kód).

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.