Thats the normal behaviour.
* Constructor:
cannot call any virtual function because the derived class is not initialized. The state of the memebers is undefined.
* Destructor:
cannot call any virtual function because the derived class is already deinitialized. The member state is undefined or invalid from the final operations. Thats you must not set any values to a defined value (i.e. NULL).
Regards.
[edit]
additional (i forgot)
imagine you have classes like this:
class A{};
class B : public A{}
class C : public B{}
the functions for "class C" will be called as follows:
this->A::A();
this->B::B();
this->C::C();
this->C::~C();
this->B::~B();
this->A::~A();