Thanks for all the answers, now lets get to the next level =) I seen this code from one of my colleagues, and wonder wether this is valid C++: ~CMyclass() { foo(this); } To quote the standard: "The lifetime of an object of type T ends when: * if T is a class type with a non-trivial destructor (12.4), the destructor call starts, or * the storage which the object occupies is reused or released." So you are passing a pointer to an undead object, I can expect this could yield interesting results in some contexts, but since you still have to access the object members during the destruction there isnt much a compiler could mess up? But I`d be interested what should/could happen if derived destructors already did their work, and foo tries to use RTTI (dynamic_cast, typeid). I suspect this is undefined behaviour anyway given that these could throw, and similarly dangerous as accessing virtual functions that might have overrides in the derived classes. Regards, Norbert