【发布时间】:2014-06-22 21:23:24
【问题描述】:
我现在正在学习 c++ 并从书中做一些练习。 我被要求编写枚举的定义,它需要 3 个值(向前、向后、停止)和 15 个此类元素的数组。在这个定义中,我必须设置这个数组的前 5 个元素的值。我做到了没有问题,但它让我思考..如果我写:
enum move {FORWARD = 1, BACKWARD, STOP};
move array[15] {FORWARD, BACKWARD, STOP, STOP, STOP};
... 前 5 个元素的值分别为 1、2、3、3、3,但之后的值都为 0。 既然“移动”不能取 1、2 或 3 以外的值,这怎么可能? 如果我只指定前 5 个字段,为什么还要初始化数组的其余部分? 或者它只是意味着那些是空字段?
请用简单的方式解释,让像我这样的初学者可以理解:),谢谢。
【问题讨论】:
-
首先不要使用 move 作为
enum的名称。 -
C++中没有empty field或empty memory area这样的东西。三是初始化和未初始化。对于指针,还有 NULL(或者,等效地,nullptr)。
-
@40two,这就是命名空间的用途,对吧?试图避免标准库使用的每一个标识符都是浪费时间,除非存在冲突的实际风险,这实际上应该只发生在你公开某些东西并且愚蠢的用户使用两个库的指令的库中。
-
@ddur,未检查枚举的有效值。这意味着为某些人不使用的东西付费。
-
我现在明白了。感谢所有答案。
标签: c++ arrays enums initialization