C 中的静态成员初始化
在 C 中,在类定义中定义静态成员可能是一个令人困惑的主题。本文解决了有关 C 中静态变量初始化的问题,探讨了为什么禁止类内初始化以及如何正确初始化它们。
1.禁止类内初始化
当尝试在类声明中定义公共静态变量时,如下所示,可能会出现编译错误:
public: static int j = 0;
这是因为C 标准禁止在类声明中初始化非常量静态成员,如错误消息中所述:“ISO C 禁止类内初始化非常量静态成员‘j’。”
2.允许的常量成员初始化
与非常量静态成员相比,常量静态成员可以在类声明中初始化。这是允许的,因为 const 成员被视为编译时常量,并且必须使用编译时已知的值进行初始化。
3. C 中静态变量的初始化
在 C 中,静态变量不会像在 C 中那样自动初始化为零。要在 C 中初始化静态变量,必须在类外部显式定义它们的初始值声明,通常在单独的源文件 (.cpp) 中。
例如,要初始化上面声明的静态变量 j,您可以将代码修改为如下:
// Header file class Test { public: static int j; }; // Source file int Test::j = 0;
结论
在 C 中,由于需要灵活地在外部初始化静态变量,因此禁止在类内初始化非常量静态成员类声明。然而,常量静态成员可以在类声明中初始化。 C 中静态变量不会自动初始化为零;它们的初始值必须明确定义。
以上是如何在 C 中正确初始化静态成员?的详细内容。更多信息请关注PHP中文网其他相关文章!