为什么我不能在C++中初始化静态字段

Yod*_*oda 8 c++ static

可能重复:
在C++中定义静态成员

我在C++上工作不多,我不明白如何在C++中使用静态字段,它们似乎没用.请指正.

我不能这样做:

class AClass{
    public:
        static int static_field = 0;
};
Run Code Online (Sandbox Code Playgroud)

而且这也不起作用

class AClass{
    public:
        static int static_field;
};

int main(){
    int AClass::static_field = 0;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Joh*_*0te 15

实际上,你很亲密.

你应该移动:最好在CPP文件int AClass::static_field = 0;之外移动 main()AClass.cpp.

这样,您在标头中声明它并在源文件中初始化它.您可以在设置此声明/初始化后立即使用它main()或在其他任何地方使用它AClass::static_field.

PS:他们绝对没有用武之地.

这是一个很好的用例...假设你有内存泄漏,你需要跟踪它们.你在你的类中放了一个静态计数器,所以该类的所有实例都共享它.然后,您可以使任何构造函数/析构函数递增和递减该计数器.因此,您可以打印计数器以显示有多少实例存在以帮助查找泄漏.


alv*_*med 11

您必须在main函数范围之外初始化static_field.

int AClass::static_field = 0;
int main(){
}
Run Code Online (Sandbox Code Playgroud)


Cod*_*ice 5

尝试这个:

class AClass{
    public:
        static int static_field;
};

int AClass::static_field = 0;

int main(){
    return 0;
}
Run Code Online (Sandbox Code Playgroud)