Recomendado, 2024

Escolha Do Editor

Diferença entre estrutura e classe

Tanto uma estrutura quanto uma classe fornecem uma maneira de criar um tipo de dados customizado que pode ser usado posteriormente para criar instâncias. C ++ expande o papel da estrutura para criar uma classe. Tanto a estrutura quanto a classe são semelhantes em todos os aspectos, exceto uma diferença que, por padrão, a estrutura tem todos os membros como "públicos" e a classe, por padrão, tem todos os membros "privados". Vamos estudar a diferença entre estrutura e classe usando o gráfico de comparação.

Gráfico de comparação

Base para ComparaçãoEstruturaClasse
BasicSe o especificador de acesso não for declarado, por padrão, todos os membros são 'públicos'.Se o especificador de acesso não for declarado, por padrão, todos os membros são 'privados'.
Declaraçãostruct structure_name {
tipo struct_element 1;
tipo struct_element 2;
tipo struct_element 3;
.
.
.
};
class class_name {
membro de dados;
função de membro;
};
InstânciaInstância de 'estrutura' é chamada de 'variável de estrutura'.Instância de uma 'classe' é chamada 'objeto'.

Definição de Estrutura

Uma estrutura é uma coleção de variáveis ​​de tipos de dados diferentes, todos referenciados por um nome. Uma declaração de estrutura forma um modelo que é usado para criar uma instância da estrutura. A estrutura é declarada como segue.

 struct sname {tipo struct_element1; tipo struct_element2; tipo struct_element3; . . . } variável1, variável2, . . .; 

A palavra-chave 'struct' define para o compilador que uma estrutura está sendo declarada. O 'sname' representa o nome dado à estrutura. A declaração da estrutura é sempre terminada por um ponto e vírgula, uma vez que é considerada como uma declaração. Você pode declarar as instâncias da estrutura antes de sua terminação como feito no código acima (variável1, variável2) ou você pode declarar a instância da estrutura em main (), escrevendo o nome da instância precedido com o nome da estrutura.

 // example. main () {sname S1, S2; } 

Aqui S1 e S2 são as instâncias da estrutura. As instâncias da estrutura são chamadas de “variável de estrutura”. O elemento declarado dentro do corpo da estrutura pode ser acessado através das variáveis ​​de estrutura através do uso do operador ponto (.).

 // exemplo S1. struct_element1; 
  • A matriz de estrutura também pode ser criada, para isso, primeiro você precisa declarar uma estrutura e, em seguida, declarar uma matriz desse tipo.
 // sample struct sname sarray [10]; 

A declaração acima cria uma matriz com o nome 'sarray' contendo dez variáveis ​​e cada variável é organizada conforme definido em 'sname'.

  • Você pode passar um membro de estrutura para uma função e pode passar uma estrutura inteira para uma função.
  • Como ponteiro inteiro, ponteiro de matriz, um ponteiro de estrutura também pode ser declarado colocando '*' na frente do nome de variáveis ​​de estrutura.
 // sample struct sname * S1; 

Nota:

Os elementos 'estrutura' são armazenados em um local de memória contígua.

Definição de Classe

Classe em OOP define um novo tipo que contém membros de dados e função de membro, que são usados ​​para acessar os membros de dados da classe. As instâncias de classes são chamadas de "objetos", cada qual com a mesma organização que uma classe. A classe é uma abstração lógica, enquanto que um objeto tem uma existência física. A classe é sintaticamente semelhante à estrutura. A classe pode ser declarada como segue.

 class class_name {membros de dados privados e funções de membro. access_specifier tipo data_member; tipo mem_funct (lista de parâmetros) {. . }} lista de objetos; 

Aqui, a classe é uma palavra-chave que declara ao compilador que uma classe foi declarada. A principal característica da OOP é a ocultação de dados, que é obtida fornecendo três especificadores de acesso que são “públicos”, “privados”, “protegidos”. Se você não especificar nenhum especificador de acesso na classe ao declarar membros de dados ou funções de membro, por padrão, todos serão considerados privados. O especificador de acesso público permite que funções ou dados sejam acessados ​​por outras partes do programa. Os membros privados da classe só podem ser acessados ​​por um membro dessa classe apenas. O especificador de acesso protegido é aplicado durante a herança. Depois de declarar o especificador de acesso, ele não pode ser alterado em todo o programa.

Os objetos não são nada além da instância das classes. Os membros da classe são acessados ​​pelo objeto da mesma classe usando um operador de ponto (.).

 //object.mem_funct (argumentos); 
  • O objeto também pode ser passado como um argumento para uma função.
  • O ponteiro para um objeto também pode ser criado.

Principais diferenças entre estrutura e classe

  1. A principal diferença entre estruturas e classes é que, por padrão, todos os membros da estrutura são públicos, enquanto, por padrão, todos os membros da classe são privados.

Semelhanças:

  • Em C ++, tanto a estrutura quanto a classe são sintaticamente equivalentes.
  • Tanto a estrutura quanto a classe podem declarar alguns de seus membros como privados.
  • O nome de uma estrutura ou classe pode ser usado como um tipo independente.
  • Tanto a estrutura quanto uma classe suportam o mecanismo de herança.

Conclusão:

A estrutura em C tinha algumas das limitações, pois a estrutura não permite a ocultação de dados, o tipo de dados 'struct' não pôde ser tratado como tipos internos, as estruturas não suportam herança. Estrutura em C ++ superou essas limitações. Em C ++, as classes são a versão expandida da estrutura. O programador acha fácil usar a classe para armazenar dados e funcionar tanto e estruturar apenas para armazenar dados.

Top