首页 > 后端开发 > C++ > 为什么无法在 C 类中初始化非常量静态成员变量?

为什么无法在 C 类中初始化非常量静态成员变量?

Barbara Streisand
发布: 2024-12-17 10:56:24
原创
644 人浏览过

Why Can't I Initialize Non-Constant Static Member Variables Within a C   Class?

理解非常量静态成员的类内初始化的禁止

在 C 中,尝试定义一个具有初始值的公共静态变量,例如 static int j=0;,触发编译错误。这归因于 ISO C 中的基本规则,该规则禁止非常量静态成员变量的类内初始化。

禁止的理由

与 C 不同,此类变量是隐式初始化的为零时,C 要求它们保持未初始化状态。这种区别源于引用透明度原则,该原则确保静态成员的值在类的所有实例中保持一致。允许类内初始化可能会损害这一原则,导致变量值不一致。

常量静态成员的初始化

与非常量成员相比,允许初始化常量静态成员类内,因为它们的值在初始化后无法修改。这意味着这些成员在其整个生命周期中保持一致的值。

静态变量初始化的含义

禁止类内初始化意味着 C 中的静态变量不会自动初始化为 0,如相反,它们保持未初始化状态,直到在程序中的其他地方显式赋值为止。

C 中的正确初始化

要正确初始化 C 中的静态变量,需要在头文件中定义它们并在单独的 .cpp 文件中分配初始值,如下面的代码片段所示:

// Header file
class Test {
public:
  static int j;
};

// .cpp file
// Initialize static variables
int Test::j = 0;
登录后复制

通过遵循这种方法,您可以确保静态变量在所有类实例中正确且一致地初始化。

以上是为什么无法在 C 类中初始化非常量静态成员变量?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板