私は次のものを持っています:
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に設定されていることがわかります。しかし、2回目にd2-> f()を呼び出すと、コードは「static boolindicator=false;」という行にもヒットしません。そしてそれはtrueに保たれます(d1-f()の最初のパスから)これはまさに私が望む振る舞いですが、なぜこれが起こっているのか理解できません。誰かが何が起こっているのか説明してもらえますか?前もって感謝します