删除父类时,方法局部的静态变量会怎样?

时间:2019-04-16 07:08:58

标签: c++ class static

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

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

   ...
}

该行为很明显,“ myvar”仅初始化一次,并且在下一次调用myFct()的过程中在“ ...”期间对其进行更改时,只能看到myvar的最后一个值,而看不到初始值。

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

谢谢!

1 个答案:

答案 0 :(得分:4)

  

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

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