使成员函数中的静态变量对于每个实例独立

Tom*_*tro 2 c++ static class function member

给定班级:

class A {
    Public:
        void foo() {
            static int i;
            i++;
        }
};
Run Code Online (Sandbox Code Playgroud)

i在此示例之后,如何更改它以防止在实例之间进行更改:

A o1, o2, o3;
o1.foo(); // i = 1
o2.foo(); // i = 1
o3.foo(); // i = 1
o1.foo(); // i = 2
Run Code Online (Sandbox Code Playgroud)

即为i每个实例分配内存。

编辑:

是的,您可以将其添加i为实例变量,但是如果需要在各种(独立)函数中使用这些计数器,该怎么办?我希望将变量的范围仅限制于函数(“在成员函数中”)。这似乎笨拙添加变量,例如iccountercounter_2到类,如果你需要不同的柜台,岂不?

Bat*_*eba 5

class A
{
public:
    int i = 0;
    void foo(){
        ++i;
    }
};
Run Code Online (Sandbox Code Playgroud)

是正常的方式:i现在是类的成员变量。显然,您不想使用static

  • 我会把`i`设为私有 (3认同)