私有静态类成员

Q-b*_*uit 2 c++

当我们声明一个成员变量static时,它在该类的所有实例之间共享.我听说你应该想到属于类本身的变量,而不是任何实例.这让我们初始化变量而不实例化类的任何对象,这是有道理的.

class Something
{
  public:
    static int s_nValue;
};

int Something::s_nValue = 1;
Run Code Online (Sandbox Code Playgroud)

但是为什么我们允许初始化私有静态成员?

class Something
{
   private:
      static int s_nValue;
};

int Something::s_nValue = 1;
Run Code Online (Sandbox Code Playgroud)

当我们谈论静态成员时,私人甚至意味着什么?

mer*_*011 8

是的,它确实意味着什么.请考虑以下示例,该示例会抛出编译器错误,因为该成员是private.能够初始化私有变量与能够从任何上下文更改它不同.

class Something
{
  private:
    static int s_nValue;
};

int Something::s_nValue = 1;

int main(){
    Something::s_nValue = 2; // Compiler error here.
}
Run Code Online (Sandbox Code Playgroud)