类中的静态局部变量是否在对象之间存在?

min*_*nda 3 c++ static instance

class MyClass
{
  static int staticInt;

  void instanceMethod( int param )
  {
    static int parameter = param;
  }
}
Run Code Online (Sandbox Code Playgroud)

显然staticInt是在MyClass的所有实例之间共享.但是,不同的MyClass实例可以parameter在instaceMethod中具有不同的静态局部变量值吗?

更新

程序执行之间怎么样?当然,它们可能在多个程序实例中有所不同?什么定义"范围" - 执行单位?c ++运行时?

更新

谢谢 - 这帮助我压制了一个关键的错误.希望我能接受所有这些,但我会在第一个答案中没有其他标准.

Jam*_*lis 7

只有一个例子parameter.

如果需要parameter该类的每个实例的实例,请使用非静态成员变量.


AnT*_*AnT 6

为了使parameter不同实例具有不同的值,您必须创建parameter该类的非静态成员.

在当前版本中,所有实例都将共享同一个parameter对象.static在这方面,所有对象的行为完全相同.唯一取决于声明点的是名称的范围.即名称可见的区域.至于变量的寿命和保值特性 - 它们总是相同的.它尊重它就像一个"全局"变量,无论你在哪里声明它.

在你的榜样,有没有什么区别parameter,并staticInt当谈到自己的价值保持性能.唯一的区别是staticInt该类的所有成员都可以访问,而parameter只能通过instanceMethod方法访问.

该语言无法创建在程序执行期间值保持不变的变量.这种持久性必须手动实现.