【问题标题】:What happens with method-local, static variables when parent class is deleted? [duplicate]当父类被删除时,方法局部的静态变量会发生什么? [复制]
【发布时间】:2019-04-16 07:08:57
【问题描述】:

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

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

   ...
}

行为很明确,“myvar”仅初始化一次,并且每当在“...”期间在下一次调用 myFct() 时更改它时,可以看到 myvar 的最后一个值,但看不到初始值。

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

谢谢!

【问题讨论】:

  • 您可以将static 变量视为具有受限可见性的全局变量。这应该是不言自明的
  • 你的意思是类的一个instance被删除并重新创建?

标签: c++ class static


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2020-11-05
    • 2012-09-10
    • 2012-12-11
    • 2017-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多