[ azzpoz @ 04.11.2013. 14:42 ] @
Code: #include <iostream> using namespace std; class osoba { char *ime; public: osoba() { ime = NULL; } osoba(char *i) { ime = new char[strlen(i)+1]; strcpy(ime,i); } ~osoba() { cout<<" Brisem: "<<ime<<endl; delete []ime; ime = NULL; system("pause"); // kako bih vidio kada se poziva destruktor } void setIme(char *i); void predstaviSe(); }; void osoba::setIme(char *i) { delete []ime; ime = NULL; ime = new char[strlen(i)+1]; strcpy(ime,i); } void osoba::predstaviSe() { cout<<"\n Ime: "<<ime<<" duzine: "<<strlen(ime)<<" size of("<<sizeof(ime)<<") "<<endl; } void promjena(osoba p) { p.setIme("Security"); } int main() { osoba ja("Elite "); ja.predstaviSe(); promjena(ja); ja.predstaviSe(); cout<<"\n::::::: KRAJ ::::::"<<endl; system("pause>0"); return 0;} Zašto se u funkciji promjena mora proslijediti objekat klase osoba kao referentni da bude "pravilnih" izmjena na objektu klase? Objekat koji prosljeđujemo je kopija, ali njegovi atributi su u dinamičkom dijelu memoriju, pa zašto se ovo dešava, ne razumijem??? |