Funktion von abgeleiteten Klassen virtuell?



  • Hallo,
    ich habe eine Frage zur vererbung. Wenn man in einer Basisklasse eine virtuelle Funktion hat, muss man diese dann in der abgeleiteten Klasse virtual deklariert werden, oder reicht auch eine nicht virtuelle Funktion?
    Und wie sieht es mit rein virtuellen Funktionen aus?
    Kleines Beispiel:

    class IClass {
        virtual void doSomething();
    };
    
    class CClass : public ICLass {
        /* virtual ?*/ void doSomething();
    };
    


  • Die Funktion ist in der abgeleiteten Klasse automatisch virtuell. Trotzdem sehe ich es als guten Stil an, wenn man es jedes Mal dazuschreibt.



  • Michael E. schrieb:

    Trotzdem sehe ich es als guten Stil an, wenn man es jedes Mal dazuschreibt.

    Warum? Leider kann man ja nicht sehen, ob es als "ich überschreibe" oder "Subklassen sollen überschreiben" gemeint ist.



  • fdfdg schrieb:

    Michael E. schrieb:

    Trotzdem sehe ich es als guten Stil an, wenn man es jedes Mal dazuschreibt.

    Warum? Leider kann man ja nicht sehen, ob es als "ich überschreibe" oder "Subklassen sollen überschreiben" gemeint ist.

    Das läuft letztendlich auf dasselbe hinaus. Wichtig ist doch, dass eine vtable für die entsprechende Methodensignatur erstellt wird.



  • Michael E. schrieb:

    Das läuft letztendlich auf dasselbe hinaus. Wichtig ist doch, dass eine vtable für die entsprechende Methodensignatur erstellt wird.

    Ah, ok. Dachte du wolltest es als eine Art "@override" nutzen, sorry.


Anmelden zum Antworten