statyczna zmienna wewnątrz funkcji członka klasy bazowej

mam następujące:

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

w moim main () mam:

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

Uważam, że po raz pierwszy instancji D i wywołania d1-> f () zmienna statyczna jest ustawiona na false. ale po raz drugi wywołam d2-> f () kod nie trafia nawet w linię „static bool indicator = false;” i jest trzymany w prawdzie (od pierwszego przejścia d1-f ()) To jest dokładnie takie zachowanie, jakiego chcę, ale nie rozumiem, dlaczego tak się dzieje. czy ktoś może wyjaśnić, co się dzieje. z góry dziękuję

questionAnswers(2)

yourAnswerToTheQuestion