In C++ primer:
While a constructor or destructor is running, the object is incomplete. To accommodate this incompleteness, the compiler treats the object as if its type changes during construction or destruction. Inside a base-class constructor or destructor, a derived object is treated as if it were an object of the base type.
The type of an object during construction and destruction affects the binding of virtual functions.
If a virtual is called from inside a constructor or destructor, then the version that is run is the one defined for the type of the constructor or destructor itself. (I could not imagine the usage of this, could anyone give me an example? thanks a lot)