【发布时间】:2014-09-02 15:27:33
【问题描述】:
当我们声明一个成员变量静态时,它在类的所有实例之间共享。我听说您应该考虑属于类本身的变量,而不是任何实例。这让我们可以在不实例化类的任何对象的情况下初始化变量,这是有道理的。
class Something
{
public:
static int s_nValue;
};
int Something::s_nValue = 1;
但是为什么我们可以初始化私有静态成员呢?
class Something
{
private:
static int s_nValue;
};
int Something::s_nValue = 1;
当我们谈论静态成员时,私有甚至意味着什么?
【问题讨论】:
-
您可以通过这种方式初始化私有静态成员,因为语言就是这样定义私有静态成员的。如果您使用的是 c++11,则可以对静态、常量和整型类型使用内联成员初始化。
-
@snowandotherjoys,或
constexpr文字类型,但请注意,它仍然不是定义;如果它是 ODR 使用的,你仍然需要一个定义。
标签: c++