When you are in the base class constructor, the details of the derived class has not been filled in yet -- which means the virtual function table is not completely filled in yet. The virtual function table does not point to any of the derived class functions.
If you call a virtual member function from the base class constructor, several things can happen:
If the base class has an implementation of the function, that will be called. This will be the best case scenario. Remember that it is possible to define a virtual member function in the base class even if it is declared pure virtual.
If the base class does not have a member function, the entry in the virtual function table for the function could be NULL (well initialized) or something uninitialized. You are likely to get an exception thrown or segmentation violation, or any behavior -- you are entering the territory of undefined behavior.