为什么静态变量是通过类外静态变量的重新声明来初始化的?我们不能只是初始化它而不是重新声明它吗?
Why is the static variable initialized with redeclaration of static variable outside the class? Can't we just initialize it instead of redeclaring it?
#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;
链接器需要简化定义
因此,作为一个简单的规则,静态成员变量必须在类中声明,然后在类外定义
相关文章:
- 如何从构造函数声明新的私有变量?
- 使用 basic_string 声明新类型的字符串
- STD :: bad_alloc在声明新的int [n]时
- 了解函数错误的歧义新声明
- 使用模板在类中声明新函数
- 使用括号会在声明新节点时会产生错误
- QT应用程序声明新对象后崩溃
- 新声明在使用delete时包含垃圾值和堆损坏
- 是否有C#中的C 新声明
- 当我想为结构体声明新成员时,有些麻烦我不明白
- 声明新节点但不等于 NULL
- 使用以前的函数参数声明新的函数参数是否合法
- 如何在Qt 5中声明新信号槽语法作为函数参数
- 获取错误:新声明符中的表达式必须具有整型或枚举类型C++
- 在初始化中使用新声明的变量(int x=x+1)
- 如何解决编译器枚举重新声明冲突
- 非ptr新声明符中的错误表达式
- 如何使用c++中的类模板声明新的运算符
- 用C++中现有映射的地址分配新声明的映射的地址可以吗
- 正在声明新的数字类型