Witam Serdecznie,
Tworzę wskaźnik na obiekt:
A* obiekt=new B;
obiekt->setData();
delete obiekt;
Wtedy ładnie działają destruktory klasy A i B.
Nie rozumiem, czemu destruktory nie działają jeśli nie napiszę w main tej linijki:
delete obiekt;
Żaden obiekt nie zostanie usunięty.
#include <iostream>
using namespace std;
class A
{
protected:
int i;
public:
virtual void setData()
{
cout<<"i=";
cin>>i;
}
virtual ~A() { cout<<"Kasuje A\n"; }
};
class B:public A
{
public:
void setData() //ulepszona metoda (wyswietlanie)
{
cout<<"i=";
cin>>i;
cout<<"i="<<i<<endl;
}
~B() { cout<<"Kasuje B\n"; }
};
void main()
{
A* obiekt=new B;
obiekt->setData();
delete obiekt; <----- tego nie napisze to destruktory nie dzialają [???]
}
Bardzo proszę o pomocną dłoń, żeby mi to wytłumaczyć jak głupiemu.
Dlaczego destruktor sam sie nie wywoła [???]
Tylko "delete" go wywoluje.
Zwykle przeciez destruktor sam sie wywoluje.