Lar Finanças Pessoais Forte enumerações digitadas em programação C ++ - dummies

Forte enumerações digitadas em programação C ++ - dummies

Vídeo: ENTRE A GENTE TNH1 | ADRIANA ARRUDA | PARTE 1 2024

Vídeo: ENTRE A GENTE TNH1 | ADRIANA ARRUDA | PARTE 1 2024
Anonim

A programação é tudo sobre legibilidade. É difícil (na verdade é impossível) escrever e manter um programa que você não pode ler. Parte da leitura de uma listagem de código-fonte é entender o que representam os números usados ​​no programa. A ajuda mais básica que o C ++ fornece é o #define onipresente, como no seguinte exemplo citado:

#define PI 3. 141592653589793

Esta solução está correta para os valores individuais, apesar de sofrer o fato de que o #define mecanismo não é (estritamente falando) uma parte de C / C ++ uma vez que o pré-processador é executado antes do compilador. Em resposta a isso, o C ++ 2011 apresentou uma expressão constante construção:

constexpr long double PI = 3. 141592653589793;

A palavra-chave constexpr traz constantes na barraca de C ++. Este PI tem um tipo real, como outras variáveis ​​C ++. C ++ pode gerar mensagens de erro com PI que têm muito mais sentido do que as que envolvem 3. 14159.

As expressões constantes são boas para valores constantes individuais, mas muitas vezes as constantes representam conjuntos de coisas ao invés de constantes naturais, como no exemplo a seguir:

#define DC_OR_TERRITORY 0 #define ALABAMA 1 #define ALASKA 2 #define ARKANSAS 3 // … e assim por diante …

Presumivelmente, essas constantes estão sendo usadas para identificar os estados, talvez sendo usados ​​como um índice em uma matriz de objetos de estado ou como um valor em um banco de dados em algum lugar.

C ++ tem há muito tempo um mecanismo melhorado para definir esses tipos de constantes - a enumeração:

enum STATE {DC_OR_TERRITORY, // obtém 0 ALABAMA, // obtém 1 ALASKA, // obtém 2 ARKANSAS, // … e em breve…};

A palavra-chave enum apresenta uma seqüência de constantes chamada "enumeração". Nesse caso, a enumeração contém o nome STATE. Cada elemento desta enumeração recebe um valor começando em 0 e aumentando sequencialmente em 1, então DC_OR_TERRITORY é definido como 0, ALABAMA é definido como 1 e assim por diante. Você pode substituir esta sequenciação incremental usando uma declaração de atribuição da seguinte maneira:

enum STATE {DC, TERRITORY = 0, ALABAMA, ALASKA, // … e assim por diante …};

Esta versão do STATE define um elemento DC, que recebe o valor 0. Em seguida, define um novo elemento TERRITORIO, que também é atribuído ao valor 0. ALABAMA pega 1, assim como antes.

Na prática, o programador pode usar enumerações para escrever código bastante legível como o seguinte:

double taxRate (STATE s) {return taxRatesByState [s];}

O único problema com essa abordagem é que essa enumeração não cria um novo tipo (como você pode pensar).Na verdade, de acordo com o padrão, STATE é apenas outro nome para int - e as constantes ALABAMA, ALASKA, e assim por diante são todos de tipo const int.

O compilador gcc realmente fornece um enum declarado dessa maneira um pouco mais de autoridade do que simplesmente chamá-lo de outra forma de int. Você pode realmente sobrecarregar funções com base em um tipo de enum:

void fn (STATE s); vazio fn (int n); fn (ALASKA); // invoca fn (STATE)

O padrão 2011 permite que o programador crie um tipo completamente novo usando a palavra-chave enum. Como os criadores do novo padrão não queriam quebrar o código existente, o padrão requer a adição de uma palavra-chave adicional para definir um tipo de enumeração, como no exemplo a seguir:

enum class ESTATE {DC, TERRITORY = 0, ALABAMA, ALASKA, // … e assim por diante …};

Uma classe de enumeração agora é um tipo de escala completa como qualquer outra classe definida pelo usuário. O seguinte não é legal ainda por dois motivos:

int s = ALASKA;

Primeiro, a constante ALASKA é definida apenas no espaço para nome STATE. Assim, o nome da constante é ESTADO:: ALASKA. Em segundo lugar, o tipo não é int, mas STATE. Você não pode atribuir um valor do tipo STATE a um int.

ESTADO s = ESTADO:: ALASKA;

O programador pode reformular um ESTADO em um int, mas deve fazê-lo explicitamente. As conversões simples não o cortam com classes de enumeração:

int n = (int) ESTADO:: ALASKA;

Este novo tipo de enum também pode ser baseado em um dos outros tipos de número de contagem, além de apenas int:

enum class ESTATE: char {DC, // … o restante da declaração é o mesmo
Forte enumerações digitadas em programação C ++ - dummies

Escolha dos editores

Filmando fotos em situações especiais com Canon Rebel Série T3 Câmeras - manequins

Filmando fotos em situações especiais com Canon Rebel Série T3 Câmeras - manequins

ÀS vezes haverá não há problema em tirar o seu Canon Rebel T3 ou T3i fora e tirar fotos com configurações automáticas. A maior parte do tempo, você pode fazer com alguns ajustes simples. Alguns assuntos e situações de filmagem apresentam alguns desafios adicionais que exigem combinações de configurações mais complicadas. ...

Escolha dos editores

Obtendo o WordPress. org Software - dummies

Obtendo o WordPress. org Software - dummies

Depois de classificar seu host e domínio do site, você deve baixar e extrair os arquivos do WordPress pela WordPress. org e colocá-los no seu computador. Escolha um lugar que você lembrará, como um diretório de Documentos ou Download. Siga estas etapas: aponte seu navegador para o WordPress. org. A página principal do WordPress aparece. Clique em ...

Google AdSense para Bloggers de Mom - dummies

Google AdSense para Bloggers de Mom - dummies

Google O AdSense não é uma rede de anúncios orientada para a mãe, nem é A melhor opção de publicidade para a maioria dos blogs da mãe. Há certamente exceções a isso, especialmente se você blogar sobre produtos ou marcas. Todos os blogueiros que exibem publicidade devem ter um provedor de anúncios de backup - e o AdSense é uma ótima solução para essa necessidade. AdSense aprova ...

Relatório de conteúdo principal do google Analytics - dummies

Relatório de conteúdo principal do google Analytics - dummies

O relatório Top Content é um dos relatórios mais importantes no Google Analytics. Este relatório mostra as postagens mais populares no blog da sua mãe. Seu conteúdo popular dá uma visão do porquê seus leitores chegam até você. Os tópicos dessas postagens indicam o que as pessoas gostam, mesmo quando não comentam. Para visualizar ...

Escolha dos editores

Como fazer uma imagem disparar um link - as manequins

Como fazer uma imagem disparar um link - as manequins

Usam imagens para navegação . Eles são mais bonitos que os links de texto simples, e você pode adicionar a forma e a função na sua página com um elemento. Para criar uma imagem que desencadeia um link, você substitui um elemento no lugar do texto ao qual você ancoraria seu link. Esta marcação liga o texto: ...

Como abrir links em novos Windows ou Tabs com HTML5 - dummies

Como abrir links em novos Windows ou Tabs com HTML5 - dummies

O A web funciona porque você pode vincular páginas em seu site para páginas nos sites de outras pessoas usando um elemento de âncora simples. Quando você liga para o site de outra pessoa, você envia usuários para longe de seu próprio site. Para manter os usuários no seu site, HTML pode abrir a página vinculada em uma nova janela ...

Como criar tabelas em HTML5 - dummies

Como criar tabelas em HTML5 - dummies

O recipiente de marcação primária para tabelas em HTML é a tabela elemento. Ou seja, você usa a tag de abertura para denotar o início de uma tabela e você adiciona a tag de fechamento para encerrá-la. Além disso, os blocos de construção básicos para dados de tabela em HTML são a linha da tabela ( ) e os dados da tabela ...