首页 > 后端开发 > C++ > 为什么 C 中的静态数据成员必须在类声明之外定义?

为什么 C 中的静态数据成员必须在类声明之外定义?

Barbara Streisand
发布: 2024-12-09 12:44:12
原创
392 人浏览过

Why Must Static Data Members in C   Be Defined Outside the Class Declaration?

对静态数据成员的外部定义感到困惑?解开谜团

根据IBM的C知识中心,必须在类声明之外定义静态数据成员。这就提出了一个问题:为什么这是必要的,规定这一规则的底层内存分配原则是什么?

为了解决这个问题,我们必须深入研究称为“单一定义规则”的概念。在 C 中,程序中的每个静态对象必须精确定义一次且仅定义一次。类定义通常包含在头文件中,而头文件又会合并到多个翻译单元中。

如果头文件中静态对象的声明也是其定义,则每次包含头文件时都会出现多个定义。这违反了单一定义规则,导致潜在的破坏。

因此,静态对象未在标头中定义。相反,代码库中的其他地方提供了外部的单一定义。

理论上,该语言可以模拟内联函数的处理,允许将多个定义合并为一个。然而C语言并没有采用这种方式,需要遵守静态数据成员的外部定义规则。

以上是为什么 C 中的静态数据成员必须在类声明之外定义?的详细内容。更多信息请关注PHP中文网其他相关文章!

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