Also see the
Enumerations (enum) section of the cplusplus.com turorial on this page:
Other Data Types
http://cplusplus.com/doc/tutorial/other_data_types
1) Enum values are const, so you cannot change them
2) They are useful when you want to identify a restricted set of identifiers. It stops you using the wrong id in the wrong place. e.g. the suite of a card. If you use ints, you could accidentally use a value which doesn't map to a suite. But if you use
enum Suite { spades, hearts, diamonds, clubs };
then the compiler will pick up if you try to use anything other than these values (assuming you use the enum type for variables and function parameters).
Enums can also be used as normal consts. This was particularly useful in class definitions back in the "olden days", before you could define a static const integer member of a class inline. And people do still use the "hack".
The Enum Hack
http://cpptrivia.blogspot.co.uk/2010/12/enum-hack.html
Note that enum values can be the same. If you don't supply a specific value then an enum value will be one more than the previous one (starting from zero). e.g. from above, spades = 0, hearts = 1, diamonds = 2, clubs = 3.
But in the case of enum
Boolean {True = 1, False = 0, Vrai, Faux = 0, Cierto, Falso = 0};
then True, Vrai, and Cierto all have the same value and False, Faux, and Falso similarly.
(You shouldn't really need to know what the actual values are. That should be the IDE/compiler's problem.)
Andy