gpt4 book ai didi

c++ - 为什么需要在类之外定义静态数据成员?

转载 作者:太空宇宙 更新时间:2023-11-04 12:56:15 27 4
gpt4 key购买 nike

根据 Static data members在 IBM C++ 知识中心:

The declaration of a static data member in the member list of a class is not a definition. You must define the static member outside of the class declaration, in namespace scope.

这是为什么呢?关于内存分配的原理图是什么?

最佳答案

这是一种语言规则,称为单一定义规则。在一个程序中,每个静态对象(如果使用的话)必须定义一次,而且只能定义一次。

类定义通常放在头文件中,包含在多个翻译单元中(即来自多个源文件)。如果 header 中静态对象的声明是一个定义,那么您最终会得到多个定义,每个包含 header 的单元中都有一个定义,这将违反规则。因此,它不是定义,您必须在其他地方提供完全相同的定义。

原则上,语言可以做它对内联函数所做的事情,允许将多个定义合并为一个定义。但事实并非如此,所以我们坚持这条规则。

关于c++ - 为什么需要在类之外定义静态数据成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46535703/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com