当我们在类之外定义静态变量时,为什么还需要再次指定数据类型

Oza*_*ver 4 c++ oop static

我一直在解决黑客问题.我遇到了一个虚函数问题,我被要求创建一个名为Student的类.该类必须具有名为cur_id(当前id)的int变量.这是班级;

class Student: public Person{

    public:

    static int id;

    Student(){
        cur_id = ++id;
    }


};

int Student::id = 0;
Run Code Online (Sandbox Code Playgroud)

我被要求在创建类的每个新对象时增加cur_id +1.所以,我决定增加cur_id构造函数.如您所见,我已经static int在类中声明了一个变量static int id.然后我想在课堂上用初始化它的值.但是当我尝试它时Student::id = 0;,我无法访问id变量.我需要再次指定其数据类型,就像我再次声明变量一样int Student::id = 0;.是什么原因,为什么我需要两次声明一个静态变量?我知道这是一个新手问题,可能有一个简单的答案,但我找不到其他主题的答案.提前致谢.

Ben*_*ler 8

第二次你没有声明它.你定义它.这就是为什么这通常在实现文件(.cpp)中完成,而类声明在头文件(.h)中完成.