首页 >后端开发 >C++ >如何在 C 中正确初始化静态成员?

如何在 C 中正确初始化静态成员?

Barbara Streisand
Barbara Streisand原创
2024-12-14 05:51:10192浏览

How Can I Properly Initialize Static Members in C  ?

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn