【发布时间】:2013-03-01 21:34:24
【问题描述】:
我知道只有静态、常量和 int/enum (pre c++11) 的数据成员才能在类声明中初始化。 “所有其他静态数据成员必须在全局命名空间范围内定义(即在类定义的主体之外),并且只能在这些定义中初始化”。
为什么不能在类定义中初始化其他静态数据成员?禁止这样做是否有特定原因?
如果数据成员是特定于类的,为什么它们在全局命名空间范围内声明,而不是在与其类相关的某个范围内声明?
【问题讨论】:
-
“全局命名空间范围”具有误导性——定义发生在实际类的命名空间范围内;不是全局命名空间的范围。 (正如我在回答中所展示的)