vracanje reference ili pokazivaca

blejac

Primećen član
Poruka
608
Ako napravimo ovakvo zaglavlje funkcije:

CAT & makecat(int age) // cat je tip

ehm mene zanima da li ovakva funkcija vraca referencu na CAT ili pokazivac na CAT. Naravno zbog znaka '&' ja bi rekao referenca ali u svim kodovima koje sam nashao pise:

return *imepointera;

I na nekim mestima na kojima je funkcija deklarisana tako da vraca pokazivac:

CAT * makecat(int age)


za povratnu vrednost je stavljeno ovako:

return imevarijable;

Pa sam iz toga zakljucio da kada stavimo CAT * za povrtanu vrednost u zaglavlju znaci da funkcija vraca referencu,a kada stavimo CAT & ,vraca pokazivac?

Yel ovo istina ili?

Evo kod za primer koji se nalazi u knjizi koju chitam:

CAT & makecat(int age)
{
CAT * pCat = new CAT(age);
return *pCat
}

Pa eto,nadam ste da ste razumeli moje pitanje....
 
Da probam da shvatim šta je napisano. Dakle referenca nije pokazivač već uslovno rečeno drugo ime za neku promenljivu. Dakle u primeru koji je dat
Kod:
 CAT & makecat(int age)
{
CAT * pCat = new CAT(age);
return *pCat 
}
funkcija treba da vrati tip CAT odnosno referencu. Obzriom da je pCat pokazivač (pointer) na tip CAT onda izraz *pCat predstavlja tip CAT odnosno referencu.

S druge strane, ako posmatramo funkciju
Kod:
 CAT * makecat(int age)
 {
 CAT * pCat = new CAT(age);
 return pCat 
 }
ovde funkcija vraća pokazivač na CAT. Obzirom da je pCat pokazivač, onda ga je potrebno samo vratiti kao rezultat izvršavanaj funkcije.
 
pokazivac je u stvari adresa neke promenjive ili objekta u memoriji.
a osnovna razlika izmedju reference i promenjive je u tome sto se za referencu podrazumeva da mora biti inicijalizovana , dok promenjiva moze samo da se deklarise , i kao takva koristi.
 

Back
Top