[ RMAN @ 16.11.2008. 14:16 ] @
Zanima me zasto je kod preklapanja operatora obavezan znak & , ili mozda nije?
Code:
Complex &operator+=( const Complex &);
    Complex &operator-=( const Complex &);
    Complex &operator*=( const Complex &);
    Complex &operator/=( const Complex &);


I da li mozete da mi objasnite sta taj & predstavlja?
[ deerbeer @ 16.11.2008. 20:48 ] @
To je znak za reference u C++-u .
http://www.elitesecurity.org/t...ika-izmedju-referenci-pointera
Sto se tice operatora lepo objasnjeno na :
http://www.cs.caltech.edu/cour...terial/cpp/donnie/cpp-ops.html


[ EArthquake @ 16.11.2008. 22:36 ] @
naravno da nemora , ako pogledas malo bolje , videces da pri preklapanju operatora + ne vracas referencu nego novi
objekat , jer je taj koji napravis u funkciji kojom preklapas + lokalni i nestaje cim izadje iz opsega , tj kad funkcija vrati vrednos

ako stavis & i operator +() f-ja ti vrati referencu , ponekad ce to cak i da radi , ali ce raditi po principu "ako prodje prodje"
[ deerbeer @ 17.11.2008. 11:01 ] @
^ Tacno tako evo primer :
Code:

Complex c1,c2,c3 ; 
//ako uradis 
c2+=c3 ; 
//ne treba ti ni Complex& sa leve strane operatora+= jer vrednost c2 se nece dodeljivati nijednoj promenljivoj .. 
// onda f-ja moze da izgleda ovako : 
void operator += (const Complex&) ; 


//ako uradis 
c1 = c2 += c3 ; 
// treba ti Complex& jer ce c2 da preda sebe tj. referencu (ne kopiju) promenljivoj c1 itd .. 
//zato je dobra praksa da ti operatori (=,+=,/=,*=) itd vracaju referencu da bi mogao da radis operatorski lanac operacija sa desna na levo ..
//Complex& operator += (const Complex&) ; 
 
// ako imas npr. operator + neces stavljarti Complex& nego samo  Complex (novi objekat) jer samo sabiranje daje novu vrednost tj. novi objekat .. 

c1 = c2 + c3 ; 
//onda bi tvoj operator izgledao ovako 
const Complex operator +( const Complex &);