No constructor is called because you don't construct an instance of the class.
You allocate a variable that can contain a instance of it:
void main()
{
base B;
drived2 D2;
...
}
But that doesn't create any instances. To create an instance you need the
new
keyword:
void main()
{
base B;
drived2 D2 = new drived2();
...
}