首页  >  文章  >  后端开发  >  成员函数中的静态变量是否在类实例之间共享值?

成员函数中的静态变量是否在类实例之间共享值?

DDD
DDD原创
2024-11-09 17:01:02154浏览

Do Static Variables in Member Functions Share Values Across Class Instances?

成员函数中的静态变量:共享还是特定于实例?

成员函数中的静态变量在 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn