成员函数中的静态变量:共享还是特定于实例?
成员函数中的静态变量在 C 中具有独特的行为。考虑下面的类定义:
class A { void foo() { static int i; i++; } };
问题出现了:如果创建了类 A 的多个实例,在一个实例上调用 foo() 是否会修改所有实例的静态变量 i ?
与每个实例都有单独 i 个副本的预期相反,成员函数中的静态变量的行为不同。在给定的示例中,整个程序中仅存在静态变量 i 的一个副本。
A 类的任何实例都会影响相同的 i 变量,该变量在程序的整个生命周期中持续存在。举例说明:
A o1, o2, o3; o1.foo(); // i = 1 o2.foo(); // i = 2 o3.foo(); // i = 3 o1.foo(); // i = 4
因此,每次对 A 类的任何实例调用 foo() 都会递增共享 i 变量。这些静态变量提供了一种在类的所有实例之间共享数据的机制。
以上是成员函数中的静态变量是否在类实例之间共享值?的详细内容。更多信息请关注PHP中文网其他相关文章!