gpt4 book ai didi

c++ - 为什么要在类外重新声明静态变量来初始化静态变量?我们不能只初始化它而不是重新声明它吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:19:37 25 4
gpt4 key购买 nike

#include <iostream>

using namespace std;

class Box
{
public:
static int objectCount;
}

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

最佳答案

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

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

class Box
{
public:
static int objectCount;
};

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

int Box::objectCount = 0;

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

关于c++ - 为什么要在类外重新声明静态变量来初始化静态变量?我们不能只初始化它而不是重新声明它吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28381978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com