考虑以下类:
class A { void foo() { static int i; i++; } };
在 C 中处理成员函数中的静态变量时,它是对于理解它们在实例之间的行为至关重要。
多个实例和静态变量
与每个实例都拥有自己的静态变量副本的假设相反,在在这种特定情况下,整个程序中只会有一个 static int i 的副本。这是因为 A 类是非模板类,A::foo() 是非模板函数。
实例对静态变量的影响
不管A 的哪个实例调用 foo() 方法,共享静态变量 i 将受到影响。例如,如果您像这样声明 A 的多个实例:
A o1, o2, o3;
在这些实例中的任何一个上调用 foo() 都会增加 i 变量:
o1.foo(); // i = 1 o2.foo(); // i = 2 o3.foo(); // i = 3 o1.foo(); // i = 4
总之, static成员函数中的变量在类的所有实例之间共享,允许任何实例访问和修改相同的值。
以上是成员函数中的静态变量在类的不同实例中如何表现?的详细内容。更多信息请关注PHP中文网其他相关文章!