[ glorius @ 21.10.2007. 14:28 ] @
Npr...

Imam funkciju u klasi koja vraca promenljivu clanicu:

int & GetData() const { return m_Data; }

Klasa vraca referencu koju moze prihvatiti objekat koji je obicna 'vrednost', da tako kazem kao u sledecem primeru...

int value = objekatKlase.GetData();

Zasto je to tako? Ne shvatam bas 'prirodu referenci' u ovom slucaju...

Ako vracamo pokazivac, onda pokazivac mora i da prihvati pokazivac ( ili ga moramo dereferencirati ako zelimo vrednost )


[Ovu poruku je menjao glorius dana 21.10.2007. u 22:54 GMT+1]
[ 1jedini @ 22.10.2007. 11:48 ] @
Slobodnije receno referenca se ponasa kao objekat nA koji je referencirana.
Kad je dodeljujemo drugom ne-referencnom objektu onda ona 'daje' vrednost objekta na koji je referencira.

Priroda reference je(jedna od), neformalno, ja sam drugi objekat ali se od njega razlikujem po imenu.

Obavezno pogledaj 8.3.2.

... i kosultuj gugl.
[ glorius @ 22.10.2007. 23:18 ] @
Da da... razumem da je referenca sinonim za drugu promenljivu ( koristim ih pri predavanju parametara funkcijama itd... )

Samo mi je ova konstrukcija bila po malo cudna... I, koliko mogu da zakljucim, reference se same dereferenciraju, tj. mehanizam dereferenciranja nije isti kao kod pokazivaca ( tipa, nadjem te preko adrese i uzmem ono sto imas :P - hehe, novi slogan, pokrao sam te - dereferencirao sam te )...

Radio sam u ASM i skapirao nacin kako pokazivaci rade "ispod haube" mada je to sa referencama malo apstraktno za mene ( za sada )...

Preostaje samo... Back to the laboratory :)

[ tosa @ 23.10.2007. 06:42 ] @
I referenca je u suštini pointer, samo konstrukcije jezika omogućavaju bezbednije korišćenje.
[ glorius @ 26.10.2007. 00:26 ] @
Evo lepog linka koji objasnjava reference...

Svidja mi se sto u jednom trnutku kaze da je referenca na i u stvari makro koji dereferencira pointer i ( *i )...

Mada, posle, kaze neshto drugo.. :)

http://www.parashift.com/c++-faq-lite/references.html
[ DjoleReject @ 28.10.2007. 19:16 ] @
Ako razumes pointer, onda ti je najlakse shvatiti referencu kao pointer koji nema mogucnost pokazivanja na drugi objekat. Narodski receno - pointer za jednokratnu upotrebu. Pored toga, samo ti je bitno da znas kako nema nikakve procedure prilikom dereferenciranja, jezik to radi sam.
[ glorius @ 28.10.2007. 22:46 ] @
Video sam dissasembly za kod dodeljivanja promenljive referenci... Kao i kod pointera, naravno :) Jednostavno, kompajler, kada vidi da je to referenca, proverava da slucajno nije NULL i da li se ponovo dodeljuje... Pa tek onda prevodi u assembly kod kao obican pointer :)