A constructor performs various tasks that are not visible to you as the programmer, even if you write no code for the constructor. These tasks are all associated with building a complete and correct instance of class type.
In Microsoft C++ (and some other implementations of C++), a constructor:
When the constructor is finished, the allocated memory is an object of a given class type. Because of the steps the constructor performs, “late binding” in the form of virtual functions can be resolved at the point of a virtual function call. The constructor has also constructed base classes and has constructed composed objects (objects included as data members). Late binding is the mechanism by which C++ implements polymorphic behavior for objects.