2010-11-03 74 views

回答

4

简短回答:

不,直到静态成员是const并且是整型或枚举类型。

龙答:

$ 9.4.2/4 - “如果一个静态数据成员是const的整体或常量枚举 型 ,其在类 定义声明可以指定一个 常数初始化这应是一个 积分常量表达式(5.19)。 在这种情况下,该构件可以出现在 积分常量表达式。该 构件应仍处于 命名空间范围来限定,如果它是在 编程的,用于m和名称空间范围 定义不应包含 初始值设定项。“

3

不适用于类类型的静态数据成员,如您的示例中所示。

9.4.2/2:

静态数据的声明 成员在其类定义不 定义...静态数据成员应在 命名空间中出现 的定义范围包括成员的 类定义。

9.4.2/4:

如果静态数据成员是常量 积分或const枚举类型的,其 在类定义 声明可以指定一个 恒定初始化内容应是一个 积分常量表达式(5.19)。 在这种情况下,成员可以出现在 积分常量表达式中。如果在 程序中使用,并且名称空间范围 定义中不包含 初始值设定项,则 成员仍应在 名称空间范围内定义。

相关问题