Variable estática dentro de la función miembro de la clase base

tengo los siguientes

   class base
   {
      public
       void f();
       ...
   }
    void base::f()
    {
        static bool indicator=false;
         .....
         if(!indicator)
         {
            ...
            indicator=true;
          }
     }
    class D:public base
    {      
       ...
     }

en mi principal () tengo:

      main()
      {
          // first instance of D
          base *d1 = new D();
          d1->f();
           ....
           // 2nd instance of D
          base *d2 = new D();
          d2->f();
       }

Encuentro que la primera vez que hago una instancia de D y llamo d1-> f (), la variable estática se establece en falso. pero la segunda vez que llamo d2-> f () el código ni siquiera llega a la línea "static bool indicator = false"; y se mantiene en verdad (desde el primer paso de d1-f ()) Este es exactamente el comportamiento que quiero, pero no entiendo por qué sucede esto. alguien puede explicar por favor lo que está sucediendo gracias por adelantado

Respuestas a la pregunta(2)

Su respuesta a la pregunta