为什么静态变量是在类外部重新声明静态变量的情况下初始化的?我们不能初始化它而不是重新声明它吗?

时间:2015-02-07 12:13:10

标签: c++

#include <iostream>

using namespace std;

class Box
{
   public:
      static int objectCount;
}

// Initialize static member of class Box
int Box::objectCount = 0;

1 个答案:

答案 0 :(得分:1)

似乎你混淆了声明和变量的定义。

声明只是告诉编译器一个名字。 所以在你的情况下:

class Box
{
    public:
        static int objectCount;
};

这只是告诉编译器有一个名为objectCount的变量 但现在你还需要一个定义。

int Box::objectCount = 0;

简化定义是链接器需要的内容 因此,作为一个简单的规则,静态成员变量必须在类中声明,然后在其外部定义。