In reply to soumyarayaprolu:
When I replace int d3=6; with static int d3 =6; then I am able to get value ofa as 0 (in base class constructor function)
Your question regarding to a as 0 here is confused. I guess you want to ask that a is 6 when static int d3=6;
static property of the class is shared by all of its instances. it can be accessed by class scope resolution operator :: directly like D::d3 even though no class instance. So I think static variable’s initialization to explicit default value is before the class instance new() construct.