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


  • Mod

    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


Anmelden zum Antworten