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ę