vielen Dank im voraus
kauhl
Dein C++-Compiler kann das sicherlich (Borland- und GNU-Compiler mit der
Option "-S").
Ja, das ist ernstgemeint. Denn die Details, wie das genau zu
funktionieren hat, hängen vom Compiler und dessen Runtime-Library ab,
und die kennt nur dieser.
Stefan
So allgemein lässt sich das nicht beantworten, das kann jeder Compiler
so implementieren, wie es ihm passt. Ein nicht unwesentlicher Teil von
C++ besteht übrigens darin, dass das Compiler "kleine" Konstruktoren und
Destruktoren inlined, sie im Assembly gar nicht mehr explizit auftauchen.
Dazu kommt noch, dass es in C++ zwei verschiedene Arten der
Instanziierung gibt, nämlich die automatische auf dem Stack und die
explizierte per 'new' auf dem Heap. Der gcc generiert dafür
unterschiedliche Konstruktoren und Destruktoren.
Zur "Unterprogramm-Technik" lässt sich eigentlich nur sagen, dass ein
Konstruktor eine ganz normale Funktion ist, und ein Destruktor meist ein
ganz normale virtuelle Methode. Wenn ein Objekt per "delete" zerstört
wird, wird der Destruktor indirekt über die VMT aufgerufen, wenn es auf
dem Stack lag (und der Compiler somit den genauen Typ kennt), wird der
Destruktor direkt angesprungen. Es sei denn, der Compiler kann ihn
inlinen, dann fehlt der Destruktoraufruf u.U. komplett.
--
Gruß,
Sebastian