我有以下静态变量
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()代码甚至没有命中“static bool indicator = false;”并且它保持为真(从d1-f()的第一遍),这正是我想要的行为,但我不明白为什么会发生这种情况。有人可以请解释发生了什么。在此先感谢
通过设计,初始值设定项对函数中的静态变量只运行一次。如果你不想要这种行为,那么你只需将该变量声明为非静态的。重点是通过多次调用该函数来维护该值。 – Lou 2013-02-23 03:21:41