C 中静态成员变量的初始化
在面向对象编程 (OOP) 中,类中存在成员变量是很常见的。然而,C 中的静态成员变量与非静态成员变量不同,因为它们是在类定义之外初始化的。这就提出了一个问题:为什么会出现这种情况?
逻辑约束
struct Gizmo { static string name = "Foo"; };
在此示例中,名称将在包含头文件的每个翻译单元中定义,这违反了规则。
历史视角
一些开发人员认为,在类中进行初始化会更直观且更不易混淆。然而,C 标准并没有改变这种行为,因为:
结论
静态成员外部初始化的要求C 中的变量是由逻辑约束和历史考虑驱动的。通过将初始化集中在一个翻译单元中,该标准确保了一致性、遵守单一定义规则以及与现有 C 代码的向后兼容性。
以上是为什么 C 中的静态成员变量在类定义之外初始化?的详细内容。更多信息请关注PHP中文网其他相关文章!