Frage zu Objekt generierung verwendung einer Klasse?



  • flogende 2 Klassen :

    class A{
    
    double X,Y;
    
    };
    
    class B{
    
     double X,Y;
    
      func1(){..}
      func2(){..}
      func3(){..}
    .
    .
    .
      funcN(){..}
    
    }
    

    Klasse A und be haben die Gleichen Datenwerten X,Y. Klasse B hat zusätzlich noch N memberfunktionen... wenn un ein Objekt von A bzw. B erstellt wird, wird bei B dann mehr zeit und speicher beansrpucht durch die memberfunktionen? Wahrscheinlich nicht oder? wie funktioniert das ?



  • Die Memberfunktionen existieren nur einmal pro Klasse. Und solange du sie nicht verwendest, verbrauchen sie auch keine zusätzliche Laufzeit. (das einzige, was Laufzeit und Platz benötigen würde, ist die Initialisierung des vptr - wenn einige der Methoden virtuell sein sollten)



  • Obwohl das anlegen der vtable auch recht schnell sein müsste. Afaik muss ja nicht für jede Instanz neuer Speicher allokiert werden, sondern die vtables existieren als fertige Zeigerlisten in der Datensektion.
    Sobald eine Instanz einer Klasse, die virtuelle Methoden hat, erzeugt wird, wird einfach nur der vtable-Zeiger auf die fertige Methoden-Liste gesetzt. Dürfte also von der Laufzeit ziemlich schnell sein, in etwa wie wenn man einen hauseigenen Integer mit einem konstanten Wert initialisiert.


Anmelden zum Antworten