Hallo zusammen,
mir ist der Aufbau der vtables im Compilat des avr-g++ unklar. Was ich
vorgefunden habe, sieht etwa so aus:
Fall 1)
Basisklasse hat keinen(!) virtuellen dtor. Dies darf man natürlich nur
machen, wenn man Objekte nicht polymorph zerstört, also kein delete
verwendet.
(Einträge als Zeigerwerte (hier je ein word)):
Fall 2)
Basisklasse hat einen virtuellen dtor. Jetzt benötigt man natürlich auch
noch new, delete, delete. Zum Testen sind das erst mal leere
Realisierungen, denn sie werden im Beispielcode auch gar nicht
verwendet. Damit ergibt sich:
1 | 0
|
2 | 0
|
3 | dtor
|
4 | dtor
|
5 | f1
|
6 | f2
|
7 | ...
|
Nun ist mir folgendes nicht klar:
a) welche Bedeutung haben die beiden ersten (immer 0) Einträge in der
vtable?
b) warum wird hier zweimal ein dtor eingetragen?