class MyClass
{
static int staticInt;
void instanceMethod( int param )
{
static int parameter = param;
}
}
显然,MyClass的所有实例之间共享staticInt
。但是,不同的MyClass实例在instaceMethod中有不同的parameter
静态局部变量值吗?
更新
程序执行之间怎么样?当然,它们可能在多个程序实例中有所不同?什么定义“范围” - 执行单位? c ++运行时?
更新
谢谢 - 这帮助我压制了一个关键的错误。希望我能接受所有这些,但我会在没有其他标准的情况下接受第一个答案。
答案 0 :(得分:7)
parameter
只有一个实例。
如果您想为该类的每个实例使用parameter
的实例,请使用非静态成员变量。
答案 1 :(得分:6)
为了使不同实例具有不同的parameter
值,您必须使parameter
成为该类的非静态成员。
在当前版本中,所有实例都将共享相同的parameter
对象。在这方面,所有static
个对象的行为完全相同。唯一取决于声明点的是名称的范围。即名称可见的区域。至于变量的寿命和保值特性 - 它们总是相同的。尊重它就像一个“全局”变量,无论你在哪里声明它。
在您的示例中,parameter
和staticInt
在保留值的属性方面没有区别。唯一的区别是,staticInt
可供所有班级成员访问,而parameter
只能通过instanceMethod
方法访问。
该语言无法创建在程序执行期间值保持不变的变量。这种持久性必须手动实现。
答案 2 :(得分:1)
是的,他们都坚持了下来。它们在实例之间不能有不同的值。
答案 3 :(得分:0)
这些值在程序执行期间(在同一程序的两次不同调用之间)不是持久的