Diferencia entre estructura y clase

Autor: Laura McKinney
Fecha De Creación: 1 Abril 2021
Fecha De Actualización: 5 Mayo 2024
Anonim
Diferencias entre una Clase y una Estructura
Video: Diferencias entre una Clase y una Estructura

Contenido


Tanto una estructura como una clase proporcionan una manera de crear un tipo de datos personalizado que se puede usar aún más para crear instancias. C ++ amplía 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: 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 usando el cuadro de comparación.

  1. Cuadro comparativo
  2. Definición
  3. Diferencias clave
  4. Similitudes
  5. Conclusión

Cuadro comparativo

Bases para la comparaciónEstructuraClase
BASIC Si no se declara el especificador de acceso, por defecto todos los miembros son públicos.Si no se declara el especificador de acceso, por defecto todos los miembros son privados.
Declaración struct structure_name {
tipo 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 se llama estructura variable.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, todas referenciadas por un nombre. Una declaración de estructura forma una plantilla que se utiliza para crear una instancia de la estructura. La estructura se declara de la siguiente manera.

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

La palabra clave "struct" define para el compilador que se está declarando 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 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 () {nombre 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 estructura mediante el uso del operador punto (.).

// ejemplo S1. struct_element1;

  • También se puede crear la matriz de estructura, para esto, primero debe declarar una estructura y luego, declarar una matriz de ese tipo.

// muestra struct sname sarray;

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

  • Puede pasar un miembro de estructura a una función, y puede pasar una estructura completa a una función.
  • Al igual que un puntero entero, un puntero de matriz, un puntero de estructura también se puede declarar colocando "*" al frente del nombre de las variables de estructura.

// muestra struct 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 funciones de miembros, que se utilizan para acceder a los miembros de datos de la clase. Las instancias de clases 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 es sintácticamente similar a la estructura. La clase se puede declarar de la siguiente manera.

class class_name {miembros de datos privados y funciones de miembros. especificador de acceso 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 se ha declarado una clase. La característica principal de OOP es la ocultación de datos que se logra al proporcionar tres especificadores de acceso que son "público", "privado", "protegido". 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 puedan acceder a funciones o datos. Solo un miembro de esa clase puede acceder a los miembros privados de la clase. El especificador de acceso protegido se aplica durante la herencia. Una vez que declara el especificador de acceso, no se puede cambiar en todo el 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 utilizando un operador de punto (.).

//object.mem_funct (argumentos);

  • El objeto también se puede pasar como argumento a una función.
  • El puntero a un objeto también se puede crear.
  1. La principal diferencia entre estructuras y 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 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 apoyan el mecanismo de herencia.

Conclusión:

La estructura en C tenía algunas de las limitaciones, ya que la estructura no permite la ocultación de datos, el tipo de datos 'struct' no se puede tratar como tipos incorporados, 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 almacenar datos y funcionar tanto como estructurar solo para almacenar datos.