[ [REaS0n] @ 24.07.2008. 08:17 ] @
Negde sam pročitao da su reference u stvari pointeri sa oganičenjima,odnosno uvek moraju da pokazaju na nešto, dok to kod pointera nije slučaj. Može li neko navesti i ostale razlike,po mogućnosti sa primerima?
[ deerbeer @ 24.07.2008. 09:08 ] @
Code:
 
//initcijalizacija pointera 
int i = 5 ; 
int* pt = &i ; 

// inicijalizacija referenci
int i = 6; 
int& rf = i ; 

int* pt ; //dozvoljeno 
int& rf ; // compile-error - nedozvolljeno (mora da pokazuje na neku promenljivu)

pt++; // inkrement adrese pointera (pristupas direktno adresi pointera u memoriji)  
rf++;  // inkrement vrednosti reference (pristuipas samo vrednosti koji drzi referenca) 

int y = *pt ; dobijanje vrednosti iz pointera 
int z = rf ; dobijanje vrednosti reference 

//i ako i referenca i pointer pokazuju na neku adresu nije dozvoljeno 
int* p = new int ; 
int& n = p ; //compile-error 



[ X Files @ 24.07.2008. 10:36 ] @
Pošto se ovo pitanje često javlja, evo da prekucam i formatizujem jednu tabelu iz knjige Dragana Milićeva.

********************************************************************************
Svojstvo Pokazivač Referenca
********************************************************************************

--------------------------------------------------------------------------------
S L I Č N O S T I
--------------------------------------------------------------------------------
Pristup do objekta je Ukazuje na objekat Upućuje na objekat
posredan
--------------------------------------------------------------------------------
Deklarišu se analogno T* T&
--------------------------------------------------------------------------------
Iste konverzije vezane za Pokazivač na izvedenu Referenca na izvedenu
nasleđivanje klasu u pokazivač na klasu u referencu na
osnovnu klasu osnovnu klasu
--------------------------------------------------------------------------------
Realizuju se tako što Inicijalizacija i pri inicijalizaciji
sadrže adresu objekta dodela, operator & objektom
--------------------------------------------------------------------------------
R A Z L I K E
--------------------------------------------------------------------------------
Pristup do objekta je Operator * Ne zahteva operator
posredan
--------------------------------------------------------------------------------
Objekat Pokazivač jeste objekat Referenca nije pravi
objekat (prve klase)
--------------------------------------------------------------------------------
Vezanost za objekat Može se preusmeriti Trajno vezana za
objekat
--------------------------------------------------------------------------------
Vezanost za postojeći Može da pokazuje ni na uvek upućuje na neki
objekat šta (null-pokazivač) objekat
--------------------------------------------------------------------------------
Ograničenja - ne postoji -pokazivač na referencu -referenca na referencu
-niz referenci
-referenca na void
-dinamička referenca
-pokazivač na referencu
--------------------------------------------------------------------------------
[ [REaS0n] @ 24.07.2008. 11:25 ] @
hvala vam obojici..

ono što mene zaista buni svo vreme je razlika izmedju 'Ukazuje na objekat' i 'Upućuje na objekat'
[ xeron @ 25.07.2008. 21:12 ] @
Na osnovu pokazivača indirektno pristupamo nekom objektu, pokazivač je promjenjljiva koja sadrži adresu objekta na koji pokazuje.
("Ukazuje na objekat")

Referenca radi direktno sa objektom, u sustini predstavlja samo drugo ime za isti objekat ("Upućuje na objekat").
[ [REaS0n] @ 26.07.2008. 13:49 ] @
uh, mnogo dobro objašnjenje, hvala!
[ itf @ 31.07.2008. 20:46 ] @
Uvođenjem reference samo dodaješ još jedno ime za već postojeću varijablu.