class Object {
public:
virtual ~Object (void);
};
Object::~Object (void) {
int var = 555; var++;
}
int main() {
Object o;
return 0;
}
Object::~Object() [base object destructor]:
mov edx, OFFSET FLAT:vtable for Object+16
ret
Object::~Object() [deleting destructor]:
call Object::~Object() [complete object destructor]
call operator delete(void*)
ret
Object::Object() [base object constructor]:
mov edx, OFFSET FLAT:vtable for Object+16
ret
main:
call Object::Object() [complete object constructor]
call Object::~Object() [complete object destructor]
ret
vtable for Object:
.quad Object::~Object() [complete object destructor]
.quad Object::~Object() [deleting destructor]
Было бы логично увидеть, что происходит вызов deleting dtor внутри которого происходит вызов base object dtor.