[ bunika @ 21.02.2007. 17:32 ] @
pozdrav, imam par pitanja vezanih za preklapanje operatora. naime, dosao sam do jednog dijela koji me, vise ni sam ne znam zasto, konstantno zbunjuje. pocecu od referenci. koliko sam shvatio, reference su u stvari konstantni pointeri koji su automatski dereferencirani. tako da se prilikom prenosenja reference u funkciju, na stek kopira adresa, a ne citav objekat. dok u slucaju da zelimo proslijediti objekat po vrijednosti, koristimo konstruktor kopije. medjutim, nije mi jasno sta se u stvari desava kada je povratna vrijednost funkcije referenca? u slucaju, da je povratna vrijednost pointer na neki tip, iz funkcije prenosimo adresu koju mozemo prihvatiti nekim pokazivacem na taj isti tip, pa dereferenciranjem pristupiti sadrzaju memorijske lokacije. ali sta se desava kada iz funkcije vracamo referencu? sta u stvari vracamo? adresu ili objekat? primjer iz knjige, preklapanje operatora dodjele za klasu complex: Complex& Complex::operator=(const Complex &z){ r=z.r; i=z.i; return *this; } pise da se referenca koristi da bi kompletan izraz bio lvrijednost, plus, da bi se izbjegao konstruktor kopije. prvo, nije mi jasno zasto se mora koristiti referenca da bi izraz bio lvrijednost, a drugo, sta se u stvari desava u memoriji pri pozivu ovakve funkcije? nadam se da nisam unio tonu konfuzije, posto ni sam ne znam tacno definisati sta mi nije jasno. nadam se da ce mi neko razjasniti ove stvari. unaprijed zahvalan. pz |