Virtual Methodene verwenden ???



  • Hi,

    also ich habe hier drei Klassen. Jetzt habe ich festgestellt das die Methoden der Klassen alle gleich lauten. Nur der Inhalt der Methoden ist anders.

    Ist das ein Fall für eine virtuelle Methode? Ist es gut wenn ich jetzt eine Klasse programmiere die nur aus leeren Methoden besteht. Aber dann könnte ich ja alles doch so lassen wie es ist? Ich meine vom Aufwand her ist es doch egal?



  • Detlef H. schrieb:

    Hi,

    also ich habe hier drei Klassen. Jetzt habe ich festgestellt das die Methoden der Klassen alle gleich lauten. Nur der Inhalt der Methoden ist anders.

    Ist das ein Fall für eine virtuelle Methode?

    Wenn die drei Klassen in einer Klassenhierarchie abgeleitet wurden, ja.
    Also:

    struct A {
      virtual void fun() { /*mach dies*/ }
    }
    struct B : public A {
      virtual void fun() { /*mach jenes*/ }
    }
    struct C : public B {  //Alternativ: public A
      void fun() { /*mach irgendwas*/ }
    }
    

    Ich meine vom Aufwand her ist es doch egal?

    Die Klassen werden ein klein wenig größer, da die vtable, in der die Adressen der virtuellen Methoden drinstehen, auch noch "verwaltet" werden müssen.


Anmelden zum Antworten