Diferencia entre estructura y clase en C++
-
las palabras clave
estructura
frente aclase
en C++ -
Modificadores de acceso en
clase
frente aestructura
en C++ -
Asignación de memoria en
clase
frente aestructura
en C++ -
Valores nulos en
clase
frente aestructura
en C++ -
Tipo de valor frente a tipo de referencia en
clase
frente aestructura
en C++ -
Seguridad en
clase
frente aestructura
en C++
Este artículo explica la diferencia entre una estructura y una clase en C++. Este artículo está escrito sobre la última versión de C++; había muchas más restricciones y diferencias entre una estructura
y una clase
en las versiones anteriores.
En la mayoría de los casos, la estructura
es bastante similar a una clase
, pero pocas diferencias. Veámoslos uno por uno.
las palabras clave estructura
frente a clase
en C++
Una estructura se declara usando la palabra clave struct
, mientras que la palabra clave class
se usa para declarar una clase.
La sintaxis para una clase:
class demo {
private:
private
members...
.
public : public members....
};
La sintaxis de una estructura:
struct demo {
members1;
members2;
...
};
Modificadores de acceso en clase
frente a estructura
en C++
La clase
y la estructura
en C++ tienen tres especificadores de acceso público
, privado
y protegido
, pero en C++, los miembros de una estructura son públicos
de forma predeterminada y los miembros de una clase son privados
por defecto.
Código de ejemplo usando clase
:
#include <bits/stdc++.h>
using namespace std;
class demo {
int temp;
};
int main() {
demo d;
d.temp = 20;
}
Salida: Obtenemos un error de compilación porque el temp
es privado.
[Error] int demo::temp is private
[Error] within this context
Ejemplo de código usando struct
:
#include <bits/stdc++.h>
using namespace std;
struct demo {
int temp;
};
int main() {
demo d;
d.temp = 20;
cout << d.temp;
}
Producción :
20
Asignación de memoria en clase
frente a estructura
en C++
Cada vez que se crea e implementa una estructura, la memoria se asigna en el área de “pila”, pero la memoria se asigna en el área de “montón” cuando se crea e implementa una clase.
Valores nulos en clase
frente a estructura
en C++
Los miembros de la estructura no pueden ser valores nulos
, mientras que los miembros de la clase pueden tener valores nulos
.
Tipo de valor frente a tipo de referencia en clase
frente a estructura
en C++
En C++, las estructuras son un tipo de valor y las clases son un tipo de referencia. Los tipos de valor almacenan su contenido en una pila y guardan directamente el valor donde se declaran, por lo que cada vez que se crea una variable de estructura, la variable contiene directamente los datos de la estructura
.
Pero en el caso de una clase de tipo de referencia, cada vez que se crea un objeto, contiene la referencia
a él en lugar de los datos.
Seguridad en clase
frente a estructura
en C++
La seguridad es un problema importante con las estructuras porque no podemos ocultar los detalles de implementación de los usuarios finales, pero los detalles de diseño se pueden ocultar fácilmente en la implementación de la clase.
Resumamos las diferencias en forma tabular.
Estructura | Clase |
---|---|
Utilice la palabra clave struct para definir una estructura. |
Utilice la palabra clave clase para definir una clase. |
Menos seguro. | Más seguro ya que las implementaciones pueden ocultarse al usuario final. |
La memoria se asigna en el área de pila . |
La memoria se asigna en el área heap . |
Los miembros no pueden tener valores nulos . |
Los miembros pueden tener valores nulos . |
El modificador de acceso es público por defecto. |
El modificador de acceso es privado por defecto. |
La estructura es un tipo de valor . |
La clase es un tipo de referencia . |