当父类被删除时,方法局部的静态变量会发生什么?

Elm*_*lmi 0 c++ static class

假设我在一个方法中有以下静态变量:

void myClass::myFct()
{
   static int myvar=0;

   ...
}
Run Code Online (Sandbox Code Playgroud)

行为很清楚,“myvar”仅初始化一次,并且无论何时在“...”期间更改 myFct() 下一次调用时,都可以看到 myvar 的最后一个值,但不能看到初始值。

现在我的问题是:当类“myClass”被删除然后再次创建时会发生什么?这会影响“myvar”(意味着它是否再次初始化)还是保持不变,并且在删除/构造父类后,可以在那里看到最后一个(修改后的)值?

谢谢!

lub*_*bgr 5

当类“myClass”被删除然后再次创建时会发生什么?

没有什么改变myvar。它保持原样。请注意,此行为至关重要:static成员函数中的本地数据不能绑定到特定的类实例。想象多个线程创建 的不同实例myClass,不时删除它......如果每次删除/创建都会导致对该变量的读取,那么行为将是多么不可预测和非线程安全?