首页 >后端开发 >C++ >静态变量在 C 成员函数中的行为如何?

静态变量在 C 成员函数中的行为如何?

Patricia Arquette
Patricia Arquette原创
2024-11-07 21:45:03756浏览

How Do Static Variables Behave within Member Functions in C  ?

C 中成员函数内的静态变量

在 C 中,成员函数可以包含静态变量。类中的静态成员变量在该类的所有实例之间共享,无论调用该函数的对象如何。

让我们考虑以下类:

class A {
public:
   void foo() {
      static int i;
      i++;
   }
};

与假设 A 的每个实例都有自己的 i 副本,值得注意的是整个程序中只有一个 i 实例。这是因为 static int i 是在类定义内部和任何特定函数外部声明的,使其成为类本身的成员,而不是 foo 函数的局部变量。

因此,A 对象的任何实例会影响同一个共享i,并且它的生命周期将持续到程序的执行过程中。例如:

A o1, o2, o3;
o1.foo(); // i = 1
o2.foo(); // i = 2
o3.foo(); // i = 3
o1.foo(); // i = 4

在这种情况下,A 的所有实例都访问并修改同一个静态变量 i。在任何实例上调用 foo 都会增加整个类的共享 i。

以上是静态变量在 C 成员函数中的行为如何?的详细内容。更多信息请关注PHP中文网其他相关文章!

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