Estructura en clase en C++
- Estructura en clase en C++
- Estructura en C++
- Clase en C++
- Usar la estructura en una clase en C++
- Conclusión
Usamos arreglos siempre que necesitamos almacenar un grupo de tipos de datos similares. Sin embargo, si surge una situación en la que necesitamos almacenar un grupo de tipos de datos no similares, entonces usamos los tipos de datos de estructura y clase.
Este artículo explicará la estructura y la clase y cómo usar una estructura dentro de una clase.
Estructura en clase en C++
Una estructura es un tipo de datos definido por el usuario que se utiliza para almacenar tipos de datos no similares. La palabra clave struct
lo declara.
Por otro lado, una clase también es un tipo de datos definido por el usuario para almacenar tipos de datos no similares. La palabra clave class
lo denota.
Sin embargo, la principal diferencia entre ellos es que la clase oculta los detalles de implementación de sus miembros y por defecto hace que todos los miembros de una clase sean privados, mientras que una estructura no oculta los detalles de implementación de sus miembros y por defecto hace que todos sus miembros sean públicos.
Ahora comprendamos cómo usar una estructura y una clase individualmente en C++.
Estructura en C++
Declaramos una estructura en C++ usando la palabra clave struct
, seguida de la declaración de todos sus miembros de datos. Veamos un ejemplo de código para entenderlo mejor.
#include <iostream>
using namespace std;
struct X {
int a;
};
int main() {
X x;
x.a = 10;
cout << x.a;
}
Producción :
10
En el ejemplo de código anterior, declaramos una estructura X
, dentro de la cual declaramos una variable a
. Ahora, creamos una instancia de esta estructura y luego tratamos de acceder a la variable a
por esta instancia x
en el método principal; la estructura puede acceder fácilmente a ella y cambiar su valor porque todos sus miembros son, por defecto, públicos.
Clase en C++
Declaramos una clase en C++ con la palabra clave clase
, seguida de la declaración de los miembros de datos de la clase. Comprendamos el uso de una clase en C++ con la ayuda del código.
#include <iostream>
using namespace std;
class X {
int a;
};
int main() {
X x;
x.a = 10;
cout << x.a;
}
Producción :
./ex.cpp: In function 'int main)':
./ex.cpp:23:9: error: 'int X::a' is private
int a;
^
./ex.cpp:28:7: error: within this context
x.a = 10;
^
./ex.cpp:23:9: error: 'int X::a' is private
int a;
^
./ex.cpp:29:13: error: within this context
cout<<x.a;
^
En el ejemplo de código anterior, creamos una clase seguida de la declaración de un miembro de datos dentro de ella como variable a
. Sin embargo, no podemos acceder a este miembro de datos dentro de nuestra función principal porque los miembros de una clase son privados por defecto.
Por lo tanto, no se puede acceder y arroja un error.
Usar la estructura en una clase en C++
Hemos visto cómo hacer una estructura y una clase individualmente. Ahora comprendamos cómo usaremos una estructura dentro de una clase en C++.
Entenderemos este concepto con la ayuda de un ejemplo de código.
#include <iostream>
using namespace std;
class X {
public:
struct T {
int a;
};
};
int main() {
X x;
x.a = 10;
cout << x.a;
}
Producción :
./ex.cpp: In function 'int main)':
./ex.cpp:15:7: error: 'class X' has no member named 'a'
x.a = 10;
^
./ex.cpp:16:13: error: 'class X' has no member named 'a'
cout<<x.a;
^
Como puede ver, el código anterior arroja un error cuando intentamos acceder a la variable de estructura a
en nuestro método principal. Esto se debe a que solo hemos creado una instancia de la clase y llamamos a nuestra variable por la instancia de la clase.
Ni siquiera hicimos la instancia de la estructura. Por tanto, el programa arroja un error que no determina la variable a
.
Ahora, discutiremos cómo superar este error. Como ha visto en los ejemplos de estructura y clase, debe crear una instancia de una estructura y una clase antes de acceder a sus miembros.
El mismo concepto se aplica cuando usa la estructura dentro de una clase. Entendamos esto con la ayuda de un ejemplo de código.
#include <iostream>
using namespace std;
class X {
public:
struct T {
int a;
};
T t;
};
int main() {
X x;
x.t.a = 10;
cout << x.t.a;
}
Producción :
10
Por lo tanto, ahora hemos creado una instancia de la estructura dentro de la propia clase y accedemos a la variable de estructura a
con la ayuda tanto de la clase como de la instancia de la estructura.
Conclusión
En este artículo, hemos visto el uso de la clase así como la estructura en C++. Ambos son tipos de datos definidos por el usuario; sin embargo, la única diferencia entre ellos es que los miembros de una clase son privados por defecto, mientras que los miembros de una estructura son públicos por defecto.
Luego, también discutimos el problema que generalmente encontramos al usar una estructura en una clase.