Avec le mot clé enum, vous définissez réellement un type, ne définissant pas le stockage comme un membre de données.
Il est comme la définition d'une classe interne, comme celui-ci:
class X
{
private:
class InnerClass
{
...
};
};
La définition est juste une classe interne définition. Il ne fait que définir le type dans le contexte de la classe externe X, donc InnerClass ne peut être appelé que X :: InnerClass. Mais il ne prend certainement pas de place dans les instances de la classe X.
En ce qui concerne la remarque sur enums: Les valeurs enum sont en fait des entiers, et ces entiers sont utilisés dans le code si nécessaire. Normalement, il n'y a pas de stockage central de toutes les valeurs enum. L'énumération définit simplement un mappage entre un jeton et une valeur numérique et partout où le jeton est utilisé dans votre code, le compilateur le remplace par la valeur numérique.
Quel est l'avantage de le faire? –
@Andersson: J'aime les garder à portée, et le nom de la classe est souvent le plus approprié. Je suppose que vous ne pouvez pas créer un espace de noms portant le même nom qu'une classe. – nus