我一直在解决hackerrank问题。我遇到了一个虚函数问题,我被要求创建一个名为 Student 的类。这个类必须有一个名为 cur_id (当前 id)的 int 变量。这是类(class);
class Student: public Person{
public:
static int id;
Student(){
cur_id = ++id;
}
};
int Student::id = 0;
我被要求在创建类的每个新对象时增加 cur_id +1。因此,我决定在构造函数中增加
cur_id
。如您所见,我在类中将 static int
变量声明为 static int id
。然后我想用类中的 零 初始化它的值。但是当我尝试将它作为 Student::id = 0;
时,我无法访问 id
变量。我需要再次指定它的数据类型,就像我再次将变量声明为 int Student::id = 0;
一样。这是什么原因,为什么我需要两次声明一个静态变量?我知道这是一个新手问题,可能有一个简单的答案,但我无法在其他主题中找到答案。提前致谢。 最佳答案
第二次你不申报。你定义它。这就是为什么这通常在实现文件 (.cpp) 中完成而类声明在头文件 (.h) 中完成的原因。
关于c++ - 为什么在类外定义静态变量需要再次指定数据类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53703036/