[ xploiter @ 29.10.2007. 22:23 ] @
Imam problem u jednom programcicu u kojem se u desktruktoru prvo brisu pokazivaci pa se postavljaju na null. Ima nekih stvari koje nemaju veze sa pitanjem u kodu (ova referenca), ali to sam samo pisao onako u edukacione svrhe i da istrazujem, posto moram ovo utvrdid, jer sam sad zavrsio osnovno o pokazivacima, evo sad su na redu reference. Pitanje: Zar nebi trebao program da se srusi u liniji 55 gdje se pokusava pristupit pokazivacu its_age, odnosno promjenit njegova vrijednost, preko funkcije Set_age, jer je u liniji 54 pozvan destruktor u kojem se its_age postavlja na NULL, a pokazivac na NULL ne pokazuje na nista (koliko ja znam ![]() Code: #include <iostream> class Cat { private: int * its_age; public: Cat(int age) { using namespace std; its_age = new int; *its_age = age; cout << "\n******Konstruktor*****\n"; } ~Cat() { using namespace std; delete its_age; its_age = NULL; cout << "****Destruktor*****\n"; } int Get_age() {return *its_age;} void Set_age(int n_age) {*its_age =n_age;} }; int main() { using namespace std; Cat * frisky = new Cat(10); Cat &r_cat = *frisky; int x; cout << "\nPreko pokazivaca: " << "frisky ima: " << frisky->Get_age() << " godina" << endl; cout << "Preko reference:" << "frisky ima: " << r_cat.Get_age() << " godina" << endl; cout << "Unesite godine za frisky: "; cin >> x; r_cat.Set_age(x); cout << "\nSada frisky ima: " << r_cat.Get_age() << " godina" << endl; delete frisky; cout << "Unesite ponovo godine za frisky: "; cin >> x; frisky->Set_age(x); //zar nebi trebao sad program da se srusi??? cout << "\nSada frisky ima: " << frisky->Get_age() << " godina" << endl; system ("pause"); return 0; } |