title: How static object gets initialized at compile time?
body: <pre><code>class Bird {
  public:
     Bird() {
       .....
       .....
      }    
  };
  
  void fun() {
      static Bird obj;
  }
  </code></pre>
  
  <p>When compiler compiles the statement <strong>static Bird obj</strong> It does 2 thing. First is memory allocation for object obj. Second is initialization of obj by calling constructor. My question is if initialization part happens in compile time, how all the statement inside constructor will be executed at compile time</p>