我有以下内容:
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() 代码甚至没有命中“静态布尔指标=假”行 并且它保持为真(从 d1-f() 的第一遍开始)这正是我想要的行为,但我不明白为什么会这样。有人可以解释发生了什么。提前致谢