The responsibility for creating an object of a class is
with the class's constructor. If you dont know, C++ compilers always create a default constructor if the programmer doesnt specify one in his declaration.
Declaring a constructor as 'virtual' violates the integrity of a class, since the derived class can then make changes in
the way the base class is constructed. Hence it is never
allowed.
In short, constructors are never virtual to make sure base classes are properly created(constructed). On the other hand destructors can be virtual or pure virtual.