статическая переменная внутри функции-члена базового класса

у меня есть следующее:

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

в моем main () у меня есть:

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

я обнаружил, что в первый раз я создаю экземпляр D и вызываю d1->f () статическая переменная установлена в false. но во второй раз я звоню d2->f () код даже не попал в строку "статический индикатор bool = false; " и оно сохраняется в истине (с первого прохода d1-f ()) Это именно то поведение, которое я хочу, но я не понимаю, почему это происходит. Может кто-нибудь, пожалуйста, объясните, что происходит. заранее спасибо

Ответы на вопрос(2)

Ваш ответ на вопрос