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

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

Patricia Arquette
Patricia Arquette原创
2024-11-23 09:07:31213浏览

Are static variables in member functions shared across all instances of a class?

成员函数中的静态变量:了解其行为

在 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中文网其他相关文章!

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