l'initialisation de l'enum tableau en c++

Je suis en train d'apprendre le c++, et faire un peu d'exercice à partir d'un livre en ce moment.
Je me suis demandé d'écrire une définition de l'enum qui prend 3 valeurs (avant, arrière, stop) et un ensemble de 15 éléments de ce type. Dans cette définition que j'ai pour définir les valeurs des 5 premiers éléments de ce tableau. Je l'ai fait sans problèmes, mais il m'a fait penser à.. Si j'écris:

enum move {FORWARD = 1, BACKWARD, STOP};
move array[15] {FORWARD, BACKWARD, STOP, STOP, STOP};

... 5 premiers éléments ont des valeurs de 1, 2, 3, 3, 3, mais après la qui sera de 0.
Comment est-il possible depuis le "mouvement" ne peut prendre que les valeurs 1, 2 ou 3?
Pourquoi le reste du tableau initialisé de toute façon si j'ai précisé juste 5 premiers champs?
Ou peut-être qu'il veut juste dire que ceux sont des champs vides?

Veuillez expliquer de manière simple afin de débutant comme moi peut comprendre :), merci.

  • D'abord de ne pas utiliser de bouger comme un nom pour votre enum.
  • Il n'y a pas une telle chose comme champ vide ou vide de la zone de mémoire en C++. Trois est initialisé et non initialisée. Pour les pointeurs, il est aussi NUL (ou, de manière équivalente, nullptr).
  • C'est ce que les espaces de noms sont pour la, droite? En essayant d'éviter chaque identificateur unique de la bibliothèque standard utilise est une perte de temps, sauf si il y a un risque réel de ce conflit, qui ne devrait plus se produire dans une bibliothèque, où vous exposer quelque chose de stupide utilisateur a l'aide de directives des deux bibliothèques.
  • Les énumérations ne sont pas contrôlés par des valeurs valides. Il serait payer pour quelque chose que l'on ne l'utilisez pas.
  • Voir ma réponse.
  • je comprends maintenant. merci pour toutes les réponses.

InformationsquelleAutor ddur | 2014-06-22