Witam,
Podczas pracy nad programem napotkałem pewien błąd, który powoduje krytyczny wyjątek programu. Udało mi się go zlokalizować: destruktor klasy.
By lepiej zobrazować problem posłużę się przykładem.
class CRectangle { //klasa prostokata
private:
unsigned lenb; //dlugosc boku b
protected:
SPoint *pnt; //punkt poczatkowy prostokatu (gorny lewy rog)
unsigned lena; //dlugosc boku a
(...)
public:
(...)
~CRectangle() {
if (pnt != NULL) delete pnt;
}
(...)
}
class CSquare : public CRectangle { //klasa kwadratu
//wszystkie obiekty dziedziczone po prostokacie
public:
(...)
~CSquare() {
if (pnt != NULL) delete pnt; //tutaj pojawia sie problem!
}
(...)
}
Powyższy kod skutkuje błędem. Usunięcie destruktora klasy CSquare załatwia problem - wszystko działa bez zarzutu. I stąd moje pytanie: czy jeśli dziedziczę obiekt X z innej klasy to usuwając daną klasę, X jest usuwany korzystając z destruktora klasy bazowej?