对静态数据成员的外部定义感到困惑?解开谜团
根据IBM的C知识中心,必须在类声明之外定义静态数据成员。这就提出了一个问题:为什么这是必要的,规定这一规则的底层内存分配原则是什么?
为了解决这个问题,我们必须深入研究称为“单一定义规则”的概念。在 C 中,程序中的每个静态对象必须精确定义一次且仅定义一次。类定义通常包含在头文件中,而头文件又会合并到多个翻译单元中。
如果头文件中静态对象的声明也是其定义,则每次包含头文件时都会出现多个定义。这违反了单一定义规则,导致潜在的破坏。
因此,静态对象未在标头中定义。相反,代码库中的其他地方提供了外部的单一定义。
理论上,该语言可以模拟内联函数的处理,允许将多个定义合并为一个。然而C语言并没有采用这种方式,需要遵守静态数据成员的外部定义规则。
以上是为什么 C 中的静态数据成员必须在类声明之外定义?的详细内容。更多信息请关注PHP中文网其他相关文章!