Problem mit virtuellen Dekonstruktoren
-
Hi Leutz,
ich hab ein Problem mit virtuellen Dekonstruktoren und zwar werden die nicht aufgerufen.class Widget { public: virtual void draw() =0; }; class Button : public Widget { public: virtual void draw() { cout << "draw" << endl; } virtual ~Button() { cout << "~Button" << endl; } }; int main() { Widget * w = new Button(); w->draw(); delete w; //hier müsste doch dann der dekonstruktor aufgerufen werden oder?? }Auf dem Bildschrim erscheint nur draw.
Wo ist mein Fehler?thx
-
es heisst Destruktor, dieser muss in der basisklasse virtuell deklariert sein.
class Widget { public: virtual void draw() =0; virtual ~Widget() {} };
-
In der Basisklasse einen virtuellen Destruktor implementieren.
PS: Die Dinger heißen Destruktor und nich Dekonstruktor