Question: In one of the [C++ tutorials in internet](http://www.bogotobogo.com/cplusplus/constructor.php), i found out the below description on why a constructor cannot be virtual

> 
> We cannot declare a virtual constructor. We should specify the exact
>  type of the object at compile time, so that the compiler can allocate
>  memory for that specific type.
> 
> 
> 

Is this description correct ?

I am getting confused particularly with the phrase: `so that the compiler can allocate
memory for that specific type`.

Answer: 
As Bjarne himself explains in his [C++ Style and Technique FAQ](//www.stroustrup.com/bs_faq2.html#virtual-ctor):

> 
> A virtual call is a mechanism to get work done given partial information. In particular, "virtual" allows us to call a function knowing only an interfaces and not the exact type of the object. To create an object you need complete information. In particular, you need to know the exact type of what you want to create. Consequently, a "call to a constructor" cannot be virtual.
> 
> 
>
Just to add to what already been said, there is virtual constructor design pattern, also known as [factory method](http://en.wikipedia.org/wiki/Factory_method_pattern) or factory function:

> 
> ... it deals with the problem of creating objects (products) without specifying the exact class of object that will be created
> 
> 
>