contador gratis Saltar al contenido

Diferencia entre estructura y clase.

febrero 29, 2020

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

Cuadro comparativo

Bases para la comparación Clase de estructura
Básico Si el identificador de inicio de sesión no declarado, todos los miembros son "públicos" de forma predeterminada. Si el identificador de inicio de sesión no declarado, de forma predeterminada, todos los miembros son "privados".
declaración struct structure_name {type struct_element 1; tipo struct_element 2; tipo struct_element 3; . . . }; class class_name {miembro de datos; función miembro; };
ejemplo La instancia de "estructura" llamada "variable de estructura". La instancia de una 'clase' llamada 'objeto'.

Definición de estructura

Una estructura es una colección de variables de diferentes tipos de datos, todas referenciadas por un solo nombre. Una declaración de estructura forma un modelo que se usa para instanciar la estructura. La estructura declarada de la siguiente manera.

 struct sname {type struct_element1; digita struct_element2; digita struct_element3; . . . } variabile1, variabile2, . . .; 

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

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

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

 // esempio S1. struct_element1; 
  • También se puede crear la matriz de estructuras, para esto primero debe declarar una estructura y luego declarar una matriz de ese tipo.
 // sample struct sname sarray (10); 

La instrucción anterior crea una matriz con el nombre "sarray" que contiene diez variables y cada variable organizada como se define en "sname".

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

nota:

Los elementos '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 funciones de miembros, que se utilizan para acceder a los miembros de datos de la clase. Las instancias de clase se denominan "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 sintácticamente similar a la estructura. La clase se puede declarar de la siguiente manera.

 class class_name {membri dati privati e funzioni membro. access_specifier type data_member; digita mem_funct (elenco parametri) {. . }} elenco degli oggetti; 

Aquí, la clase es una palabra clave que declara al compilador que se ha declarado una clase. La característica principal de OOP es la ocultación de datos que se obtiene al proporcionar tres especificadores de acceso que son "público", "privado", "protegido". Si no especifica un identificador 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 funciones, datos o datos accedan a otras partes del programa. Los miembros de la clase privada solo pueden ser accedidos por un miembro de esa clase. El especificador de acceso seguro se aplica durante la herencia. Una vez que se ha declarado el identificador de inicio de sesión, no se puede cambiar en todo el programa.

Los objetos no son más que la instancia de las clases. Los miembros de la clase son alcanzados por el objeto de la misma clase utilizando un operador de punto (.).

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

Diferencias clave entre estructura y clase

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

analogías:

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

conclusión:

La estructura en C tenía algunas limitaciones, ya que la estructura no permite la ocultación de datos, el tipo de datos 'struct' no puede tratarse como tipos incorporados, las estructuras no admiten la herencia. La estructura en C ++ ha superado 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 los datos y operar ambos y estructurar solo para guardar los datos.