статическая переменная внутри функции-члена базового класса
у меня есть следующее:
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 ()) Это именно то поведение, которое я хочу, но я не понимаю, почему это происходит. Может кто-нибудь, пожалуйста, объясните, что происходит. заранее спасибо