Recomendado, 2024

La Elección Del Editor

Diferencia entre estructura y clase

Tanto una estructura como una clase proporcionan una forma de crear un tipo de datos personalizado que se puede utilizar más para crear instancias. C ++ expande el rol de la estructura para crear una clase. Tanto la estructura como la clase son similares en todos los aspectos, excepto una diferencia que, la estructura por defecto tiene todos sus miembros como "públicos" y la clase por defecto tiene todos sus miembros "privados". Estudiemos la diferencia entre estructura y clase mediante el uso de una tabla de comparación.

Gráfica comparativa

Bases para la comparaciónEstructuraClase
BASICSi no se declara el especificador de acceso, de forma predeterminada, todos los miembros son "públicos".Si no se declara el especificador de acceso, por defecto, todos los miembros son 'privados'.
Declaraciónstruct structure_name {
escriba struct_element 1;
escriba struct_element 2;
escriba struct_element 3;
.
.
.
};
clase nombre_clase {
miembro de datos
función miembro
};
EjemploLa instancia de 'estructura' se llama 'variable de estructura'.La instancia de una 'clase' se llama 'objeto'.

Definición de Estructura

Una estructura es una colección de variables de tipos de datos diferentes, a las que se hace referencia con un nombre. Una declaración de estructura forma una plantilla que se utiliza para crear una instancia de la estructura. La estructura se declara como sigue.

 struct sname {type struct_element1; tipo struct_element2; tipo struct_element3; . . . } variable1, variable2, . . .; 

La palabra clave 'struct' define al compilador que se está declarando una estructura. El 'sname' representa el nombre dado a la estructura. La declaración de estructura siempre termina con un punto y coma, ya que se considera como una declaración. Puede declarar las instancias de la estructura antes de su terminación como se hizo en el código anterior (variable1, variable2) o puede declarar la instancia de estructura en main (), escribiendo el nombre de la instancia precedido por el nombre de la estructura.

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

Aquí S1 y S2 son las instancias de la estructura. Las instancias de la estructura se denominan "variable de estructura". Se puede acceder al elemento declarado dentro del cuerpo de la estructura a través de las variables de la estructura mediante el uso del operador punto (.).

 // ejemplo S1. struct_element1; 
  • La matriz de estructura también se puede crear, para esto, primero debe declarar una estructura y luego, declarar una matriz de ese tipo.
 // muestra struct sname sarray [10]; 

La declaración anterior crea una matriz con el nombre 'sarray' que contiene diez variables, y cada variable está organizada como se define en 'sname'.

  • Puede pasar un miembro de estructura a una función y puede pasar una estructura completa a una función.
  • Como, puntero de entero, puntero de matriz, un puntero de estructura también se puede declarar colocando '*' en el frente del nombre de las variables de estructura.
 // muestra la estructura sname * S1; 

Nota:

Los elementos de 'estructura' se almacenan en una ubicación de memoria contigua.

Definición de clase

La clase en OOP define un nuevo tipo que contiene miembros de datos y función de miembros, que se utilizan para acceder a los miembros de datos de la clase. Las instancias de clases se llaman "objetos", cada uno de los cuales tiene la misma organización que una clase. La clase es una abstracción lógica, mientras que un objeto tiene una existencia física. La clase es sintácticamente similar a la estructura. La clase puede ser declarada de la siguiente manera.

 class class_name {miembros de datos privados y funciones de miembros. access_specifier tipo data_member; escriba mem_funct (lista de parámetros) {. . }} lista de objetos; 

Aquí, la clase es una palabra clave que declara al compilador que una clase ha sido declarada. La característica principal de la POO es la ocultación de datos que se logra al proporcionar tres especificadores de acceso que son "públicos", "privados", "protegidos". Si no especifica ningún especificador de acceso en la clase al declarar miembros de datos o funciones de miembro, de forma predeterminada, todos se consideran privados. El especificador de acceso público permite que otras partes de su programa accedan a funciones o datos. Solo se puede acceder a los miembros privados de la clase por un miembro de esa clase solamente. El especificador de acceso protegido se aplica durante la herencia. Una vez que haya declarado el especificador de acceso, no podrá cambiarlo a lo largo del programa.

Los objetos no son más que la instancia de las clases. El objeto de la misma clase accede a los miembros de la clase mediante un operador de punto (.).

 //objeto.mem_funct (argumentos); 
  • El objeto también se puede pasar como un argumento a una función.
  • También se puede crear el puntero a un objeto.

Diferencias clave entre estructura y clase

  1. La principal diferencia entre las estructuras y las clases es que, por defecto, todos los miembros de la estructura son públicos, mientras que, por defecto, todos los miembros de la clase son privados.

Similitudes:

  • En C ++ tanto la estructura como la clase son sintácticamente equivalentes.
  • Tanto la estructura como la clase pueden declarar privados a algunos de sus miembros.
  • El nombre de una estructura o clase se puede utilizar como un tipo independiente.
  • Tanto la estructura como la clase soportan el mecanismo de la herencia.

Conclusión:

La estructura en C tenía algunas limitaciones, ya que la estructura no permite el ocultamiento de datos, el tipo de datos 'struct' no se podría tratar como tipos integrados, las estructuras no admiten la herencia. La estructura en C ++ superó estas limitaciones. En C ++, las clases son la versión expandida de la estructura. Al programador le resulta fácil usar la clase para guardar datos y funcionar tanto como estructurar solo para almacenar datos.

Top