成员函数中的静态变量:了解其行为
在 C 中,成员函数中的静态变量的行为与实例变量不同。让我们用一个例子来探讨它们是如何工作的:
考虑下面的类:
class A { void foo() { static int i; i++; } };
在这个类中,i 在 foo 成员函数中被声明为静态变量。静态变量的生命周期在整个程序中持续存在。
现在,让我们考虑创建 A 类的多个实例时会发生什么:
A o1, o2, o3;
是我在所有对象之间共享的静态变量A 的实例,还是每个实例都有自己的副本?
在 C 中,成员函数中的静态变量在类的所有实例之间共享。这意味着在 A 的一个实例上调用 foo() 会为所有实例增加相同的 i。
为了说明这一行为:
o1.foo(); // i = 1 o2.foo(); // i = 2 o3.foo(); // i = 3
在此示例中,A 的每个实例都调用foo() 函数,递增共享静态变量 i。
因此,与每个实例都是唯一的实例变量不同,成员函数中的静态变量是共享的单个实体由类的所有实例。他们在整个计划的整个生命周期中都保持自己的价值观。
以上是成员函数中的静态变量是否在类的所有实例之间共享?的详细内容。更多信息请关注PHP中文网其他相关文章!