Skip to main content
3 of 9
added 191 characters in body; added 10 characters in body; added 69 characters in body; added 206 characters in body
Sarfaraz Nawaz
  • 363.4k
  • 121
  • 682
  • 867

Dynamic initialization is that in which initialization value isn't known at compile-time. Its computed at runtime to initialize the variable.

Example,

int factorial(int n) { if ( n < 0 ) return -1; //indicates input error else if ( n == 0 ) return 1; else return n * factorial(n-1); } int a = 10 ; //static initialization //10 is known at compile time. Its 10! int b = factorial(8); //dynamic initialization //factortial(8) isn't known at compile time, //rather its computed at runtime. 

That is, static-initialization usually involves constant-expression (which is known at compile-time), while dynamic-initialization involves non-constant expression.

static int c;//this is also static initialization (with zero)! 

§3.6.2/1 from the C++ Standard (2003) says,

Objects with static storage duration (3.7.1) shall be zero-initialized (8.5) before any other initialization takes place. Zero-initialization and initialization with a constant expression are collectively called static initialization; all other initialization is dynamic initialization.

So there are two kind of initializations:

  • Static initialization : Its either zero-initialization or initialization with a constant expression
  • Any other initialization is dynamic initialization.
Sarfaraz Nawaz
  • 363.4k
  • 121
  • 682
  • 867