[C++] Básico sobre: Enum

Neste post irei demonstrar um pouco sobre enumerações em C++, definido através da palavra reservada enum.

Na linguagem C e C++ estamos acostumados a declarar constantes da seguintes forma:

#define BRASIL 0
#define ITALIA 1
#define PORTUGAL 2
#define ALEMANHA 3

Podemos expressar essas mesmas declarações de uma forma diferente usando enumS.

enum Paises
{
   BRASIL,
   ITALIA,
   PORTUGAL,
   ALEMANHA
};

Continue lendo este artigo….

Para declararmos uma variável do tipo enumerador existem 2 maneiras, uma é válida somente na linguagem C++, a outra é válida tanto em C++ quanto C, exemplo:

Paises pais; // Válido somente em C++
enum Paises pais // Válido em C++ e em C

Em um enum, a primeira opção por padrão recebe o valor 0, e as posteriores recebem o valor anterior + 1. Deste forma, no exemplo anterior temos ITALIA = 1, PORTUGAL = 2, ALEMANHA = 3. É possível também atribuir manualmente valores para as constantes, e caso não seja atribuído valor para alguma constante, ela irá seguir a regra citada acima. Veja com um exemplo:

enum Paises
{
    BRASIL = 2,
    ITALIA, // Vale 3, já que BRASIL + 1 = 3
    PORTUGAL = 1,
    ALEMANHA // Vale 2, já que PORTUGAL + 1 = 2
};

Achou estranho termos duas constantes com valores iguais? Isso pode ser visto neste exemplo acima, já que ALEMANHA == BRASIL == 2. Isso é possível, e não gera nenhum tipo de erro. Os valores de ALEMANHA e ITALIA são definidos através da regra anteriormente dita.

Conversão

A conversão de um enum para um inteiro é feita de maneira automática, já o contrário não é permitido pelo compilador.

enum Paises
{
    BRASIL,
    ITALIA,
    ALEMANHA
}

...

int inteiro = ALEMANHA + 1; // inteiro vale 3
Paises pais = 3; // ERRO

Melhor uso dos Enums

enum Paises
{
    BRASIL,
    ITALIA,
    ARGENTINA
};

enum Uvas
{
    RUBI,
    ITALIA,
    OUTRO_TIPO
};

Aqui temos um erro, já que ITALIA está sendo redefinido, para solucionarmos este caso precisamos usar namespaces, isso mesmo, os namespaces que abordamos neste tópico anteriormente.

Uma possível solução é esta:

namespace Paises
{
    enum
    {
        BRASIL,
        ITALIA,
        ALEMANHA
    };
}

namespace Uvas
{
    enum
    {
        RUBI,
        ITALIA,
        OUTRO_TIPO
    };
}

Bom, é isso! Espero que tenham gostado deste artigo.
Em breve mais sobre [C++] Básico sobre.

Fonte [Murilo 😛]

Anúncios
    • lamarck
    • 23 maio, 2010

    esse artigo foi pra mim né? AHUHAEHAEH

      • Andreo Vieira
      • 23 maio, 2010

      hauhausahsasuas!!! Pior que não!! Mas aproveita e aprende =P…. o próximo é de Templates

  1. No trackbacks yet.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: