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 ), a u ovom slucaju ispada da pokazivac i nakon sto je inicijalizovan na null opet pokazuje na staru adresu (zar je to moguce???). Probavao sam jos svasta, ali imam osjecaj da kad se destruktor pozove da se pokazivac ne postavi na null kao sto bi trebalo po mom misljenju. Kada postavim frisky na null nakon brisanja frisky u 54 liniji program se srusi kao sto je i ocekivano...
#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;
}