Virtual Constructor:
I agree that, actually, the virtual constructor is a morphism of the factory pattern. The Base class define a so-called virtual constructor (in fact, it can't be virtual) which is passed some information about to construct the derived class object. This virtual constructor returns a reference to the new derived class object, which is refereced or pointed by the private data memeber of the base class.
The user of the base class object passes to the virtual constructor of the base class with the information which is used to construct the derived class in the virtual contstructor. Then the user just invokes the desired application through interface of the base class, because the actual operation for these application is implemented by below code:
base_class.operate()
{
base_class::ptr_to_derived_obj.operate()
}
Alex Zhang