Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial Internet of Things >> Integrado

Estruturas e classes em C ++


C ++ continua a ser uma linguagem minoritária para desenvolvimento embarcado, mas é comumente adotada por desenvolvedores quando os projetos se tornam muito grandes para que C possa ser usado com eficiência. Esses desenvolvedores estão normalmente em transição de C para C ++ e as diferenças sutis entre as linguagens representam uma parte significativa de sua curva de aprendizado. O C ++ tem estruturas, como o C, mas não são iguais. C ++ possui classes, que são notavelmente semelhantes a estruturas. Este artigo revela os detalhes desses elementos de linguagem.

Estruturas em C

Uma estrutura em C é um item de dados composto personalizado (objeto), que pode ser construído a partir dos tipos de dados integrados existentes ( int , char , etc.), campos de bit (inteiros de tamanho de bit especificado) e outras estruturas. A ideia é agregar uma série de itens de dados que devem estar juntos. Por exemplo, uma estrutura para manter coordenadas tridimensionais pode ter a seguinte aparência:
 coordenadas da estrutura {float x; float y; float z;}; 

Este código informa ao compilador o que coordenadas de estrutura parece. Você pode então declarar variáveis ​​deste tipo assim:
 localização das coordenadas da estrutura; 

A variável localização é do tipo coordenadas de estrutura e seus campos internos podem ser endereçados usando o operador “ponto”:
 location.x =1.0; location.y =2.0; location.z =9,99; 

Claro, um efeito semelhante poderia ser alcançado usando três flutuadores separados variáveis ​​com nomes como location_x etc. No entanto, é muito mais fácil lidar com a localização como uma única variável que pode ser passada para funções etc.

A capacidade de incluir campos de bits dá às estruturas uma capacidade não disponível em nenhum outro lugar em C. Aqui está um exemplo:
 struct bitreg {unsigned up:3; não assinado:3; polaridade sem sinal:2;}; 

Cada um dos campos em uma variável do tipo struct bitreg tem um tamanho de bit específico. O compilador garante que os dados sejam armazenados de forma sensata, portanto, esperaríamos que essa variável cabesse em um byte. Além disso, todo o código “bit bashing” para acessar os campos dentro do byte é gerado automaticamente. Assim, o programador pode simplesmente acessá-los desta forma:
 controle de struct bitreg; control.up =1; control.down =2; control.polarity =3; 

Para a maior parte, o uso de estruturas em C é bastante simples e torna o código mais fácil de entender, sem impacto na eficiência de execução. No entanto, existem dois pontos sobre os quais os desenvolvedores incorporados devem estar cientes:

Embora uma estrutura C se pareça um pouco com um novo tipo de dados, na verdade não é. Um tipo de dados normalmente teria um intervalo de operações que podem ser executadas nele; este não é o caso de uma estrutura C. Para fazer qualquer coisa em uma estrutura C, além de apontar para ela, você precisa acessar os campos internos. Este assunto é tratado em C ++.

Aulas em C ++

A linguagem C ++ possui vários recursos orientados a objetos. Um deles é o conceito de classe , o que permite a descrição de algo muito mais parecido com um novo tipo de dados. Uma variável (normalmente chamada de objeto ) pode ser instanciado da classe; ou seja, é um objeto desse novo tipo.

Uma classe C ++ tem quase exatamente a mesma sintaxe que uma estrutura C e alguns recursos muito semelhantes. No entanto, existem algumas diferenças importantes:

A maioria desses recursos é ilustrada neste exemplo:
 classe minhaclasse {char a; int b; public:void fun (); minha classe(); ~ myclass ();}; myclass myobj; myobj.fun (); 

As variáveis ​​de membro a e b estão acessíveis apenas para as três funções-membro fun () , myclass () e ~ myclass () . As duas últimas funções são o construtor e o destruidor. Apenas diversão () é provável que seja chamado pelo código do usuário. O código real para todas as três funções seria definido em outro lugar e está associado à classe usando o :: operador, assim:
 void myclass ::fun () {... 

Estruturas em C ++

Além das classes, C ++ possui estruturas, que são compatíveis com versões anteriores de C. No entanto, uma estrutura C ++ também possui os mesmos recursos adicionais que são possuídos pelas classes. Esta é apenas uma das diferenças entre uma estrutura e uma classe em C ++. A acessibilidade padrão de variáveis ​​de membro e funções em uma classe é privada, como vimos; o padrão em uma estrutura é público. Assim, a funcionalidade da classe anterior também pode ser expressa assim:
 struct mystruct {void fun (); minha classe(); ~ myclass (); private:char a; int b;}; 

Usando classes e estruturas em C ++

Tendo adquirido essas informações, recomenda-se que você não as explore muito. Há muitos motivos para usar estruturas apenas para o tipo de funcionalidade oferecida em C e classes quando você precisa de recursos extras. Primeiramente, é uma questão de legibilidade do código. Outro desenvolvedor pode não ser tão claro quanto aos detalhes e o código escrito de uma forma “não padronizada” pode ser confuso.

Uma das principais prioridades ao escrever o código é garantir que ele seja legível (=sustentável). Alguém - pode ser você - pode precisar olhar este código daqui a um ano e entender o que ele faz. Um conselho:presuma que a pessoa que manterá seu código é um psicopata armado, que tem paciência limitada e sabe seu endereço residencial.

Integrado

  1. Variáveis, literais e constantes de C++
  2. Classes e objetos C++
  3. Gerenciamento de memória C++:novo e excluir
  4. Herança pública, protegida e privada C++
  5. Semáforos:serviços utilitários e estruturas de dados
  6. Grupos de sinalizadores de evento:serviços de utilidade e estruturas de dados
  7. Java - Objeto e Classes
  8. Classes de armazenamento em C++
  9. Data e hora do C++
  10. Estruturas de dados C++