virtuelle Klassen?



  • hallo!

    wozu rein virtuelle Klassen, wenn nur Vererbung möglich, jedoch keine Möglich-
    keit ein Objekt anzulegen. Alle Funktionen müssen redefiniert werden. Wo
    liegt da der Sinn?



  • wenn du z.B ne klasse tier hast und in die klassen storch,forelle,gepard vererbst gibts zwar überall gehen aber sie haben absolut keine gemeinsamkeit ( bis auf eine bewegung ) sind aber unbedingt von nöten 🙂



  • Ich kenne den Begriff 'virtuelle Klasse' nicht. Aber ich glaube du meinst 'abstrakte Klassen'.

    Siehe zB den Thread über 'Interface' in diesem Forum.

    Eine abstrakte Klasse kann man nicht instaziieren. Das hat den Sinn, dass es zB Schnittstellen definieren könnte, oder einfach als Basisklasse dient.

    Wenn man eine GUI-Library schreibt, könnte man die Klasse 'Widget' abstrakt machen und jedes Steuerelement erbt von Widget.

    Dann ist jedes Steuerelement ein Widget - und du kannst Polymorphy verwenden.

    Eine abstrakte Klasse kann man aber auch verwenden um nur ein bestimmtes Verhalten neu zu definieren.
    zB:

    class WichtigeAufgabe
    {
    private:
      //...
    public:
      //...
      void aufgabe()
      {
        //...
        ausgabe();
      }
      virtual void ausgabe() const = 0;
    };
    

    Du erbst jetzt von WichtigeAufgabe und definierst ausgabe() neu und kannst das Ergebnis von aufgabe() ganz nach deinen Wünschen verwenden.

    Natürlich sollte man hier ausgabe() eine default Implementation habe - aber ich denke der ANsatz ist klar, oder?



  • @Shade
    das wars was ich gesucht habe!
    alles klar - danke!
    U. M.


Log in to reply