在C++中,访问说明符不能控制静态成员的可见性吗?

Laz*_*zer 2 c++ static class

来自http://www.learncpp.com/cpp-tutorial/812-static-member-functions/的代码示例:

class Something
{
private:
    static int s_nValue;
};

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

此代码编译时没有警告或错误.我不懂为什么.

我们不应该s_nValue因为它是私有的而获得尝试访问的警告吗?或者这些访问说明符不适用于静态成员?

reu*_*ben 8

定义s_nValue不是从类外"访问"成员 - 它实际上是它的实现.可以认为这就像成员函数的实际实现一样,如果放在封闭类声明之外的源文件中.

换句话说,访问说明符绝对同样适用于静态成员.