NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
IT rekvalifikace s podporou uplatnění. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!

Diskuze: Rozdíl v předávání objektu jako parametr funkce/metody

V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
alfonz
Člen
Avatar
alfonz:5.3.2016 15:23

Zdravím, nevím jak je to přesně s předáváním objektu jako parametr. A hlavně mě zajímá rozdíl mezi Object* a Object&. Budu rád za případné odpovědi :)

void foo(Object object) { } //Tady by se měl objekt zkopírovat a jeho změny by neměli ovlivnit původní
void foo(Object* object) { } //Tady si nejsem jist, jen se místo . používá -> a změny se projeví i na původním
void foo(Object& object) { } //Tady by se změny měli promítnout i na původním
Odpovědět
5.3.2016 15:23
lmao
Avatar
Odpovídá na alfonz
Neaktivní uživatel:5.3.2016 15:31

U pointeru (prostřední případ) je to velmi podobné jak u referencí (poslední případ).
Pointer narozdíl od reference zabírá místo v paměti (4 byty u 32-bit, 8 bytů u 64-bit). Reference je totiž přímý ukazatel do paměti, nahrazený kompilátorem při kompilaci.
Pointery můžou nabývat NULL, reference ne.
Na referencích nemůžeš provádět pointerovou aritmetiku.
A samozřejmě je tam lepší podpora pro RAII.

Editováno 5.3.2016 15:32
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
5.3.2016 15:31
Neaktivní uživatelský účet
Avatar
alfonz
Člen
Avatar
Odpovídá na Neaktivní uživatel
alfonz:5.3.2016 15:33

Díky moc za rychlo odpověď :)

Nahoru Odpovědět
5.3.2016 15:33
lmao
Avatar
Odpovídá na alfonz
Neaktivní uživatel:5.3.2016 21:57

doplnim, rozdil je hlavne v tomhle: kdyz predavas funkci pointer predavas ukazatel na misto v pameti, ktere skutecne zabira ten objekt, je to otravny, musis to soustavne dereferencovat a kdyz nahodou zapomenes tak to padne .. .takze v C++ prisly reference, dobry na tom je, ze kdyz pouzijes referenci, muzes se k tomu objektu (datovymu typu) chovat jako by tam skutecne byl a nemusis ho dereferencovat, kdyz chces nad nim neco provest ...

reference jsou tedy pohodlnejsi a vyplati se je pouzit, kde to jde

(vim o tom, ze cast veci uz rekl Filip, ale mel jsem potrebu zminit ten rozdil v praktickem pouzivani)

Nahoru Odpovědět
5.3.2016 21:57
Neaktivní uživatelský účet
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.