Vikram Punathambekar wrote: "Pure virtual function call" from MSIE. When constructing a class, the compiler first calls the constructors of the base classes. If the programmer calls a pure virtual function within the constructor (or destructor), the compiler can detect this and gives an error. However, the compiler can't detect it if a function called by the constructor in another translation unit calls the pure virtual function. To catch this case, the appropriate vtable entry is filled in with a pointer to a C++ runtime function that produces that error message. MS could have set it to 0 instead, which would have caused an immediate access violation. Correctly speaking, the vtable should be constructed (i.e. the object's vptr set to the appropriate vtable) after initialising all the base classes but before initialising the member variables in the member-initialiser list. VC 6.0 gets it wrong and sets the vptr after the member-initialiser list but still before the body of the constructor. I've seen this in a few apps other than IE, and I seem to recall doing it myself once...