En C++, un struct
es una estructura de datos que permite agrupar varias variables bajo un solo nombre.
Los structs
son particularmente útiles cuando trabajamos con tipos de datos simples que tienen un tamaño predecible y se utilizan principalmente para representar datos que deben ser agrupados.
En C++ una struct
es prácticamente igual que una clase
La única diferencia es la visibilidad por defecto, que es public
en las struct
y private
en las clases.
Si quieres aprender más sobre structs
en C++
consulta el Curso de Introducción a la Programación leer más ⯈
Sintaxis de las structs
La sintaxis básica para definir una estructura en C++ es la siguiente:
struct NombreDeLaEstructura {
// Definición de campos
TipoDeDato Campo1;
TipoDeDato Campo2;
// Definición de métodos, propiedades, etc.
};
- NombreDeLaEstructura: Es el nombre único que se le da a la estructura.
- TipoDeDato: Especifica el tipo de datos de los campos dentro de la estructura.
Ejemplo Básico
A continuación, se muestra un ejemplo básico de cómo definir y utilizar una estructura en C++:
#include <iostream>
struct Punto {
int X;
int Y;
Punto(int x, int y) : X(x), Y(y) {}
void ImprimirCoordenadas() const {
std::cout << "Coordenadas: (" << X << ", " << Y << ")" << std::endl;
}
};
int main() {
Punto punto(3, 5);
punto.ImprimirCoordenadas(); // Imprime "Coordenadas: (3, 5)"
return 0;
}
Uso de structs
Declaración e inicialización
Las estructuras se declaran e inicializan de manera similar a las variables de otros tipos de datos.
Punto punto;
punto.X = 3;
punto.Y = 5;
// Inicialización usando el constructor
Punto otroPunto(7, 8);
Acceso a campos
Los campos de una estructura se acceden utilizando la notación de punto (.
).
int x = punto.X;
int y = punto.Y;
Inicialización de structs
Las structs
pueden inicializarse de varias maneras, incluyendo la inicialización lista y el uso de constructores.
Inicialización Lista
Persona p = {"Juan", 30, 1.75};
Constructores en structs
Aunque es más común en clases, las structs
también pueden tener constructores.
struct Persona {
std::string nombre;
int edad;
float altura;
// Constructor
Persona(std::string n, int e, float a) : nombre(n), edad(e), altura(a) {}
};
Anidar structs
Las structs
pueden anidarse dentro de otras structs
, permitiendo la creación de estructuras de datos más complejas.
struct Fecha {
int dia;
int mes;
int año;
};
struct Persona {
std::string nombre;
Fecha fechaNacimiento;
};
En el ejemplo,
- Definimos la struct
Fecha
- Definimos la struct
Persona
, que usaFecha
Ejemplos prácticos
Representación de un punto en un plano cartesiano
En este ejemplo, se define una estructura que representa un punto en un plano cartesiano.
#include <iostream>
struct Punto {
int X; // Coordenada X del punto
int Y; // Coordenada Y del punto
Punto(int x, int y) : X(x), Y(y) {}
};
int main() {
Punto punto(3, 4);
std::cout << "Punto: (" << punto.X << ", " << punto.Y << ")" << std::endl; // Imprime "Punto: (3, 4)"
return 0;
}
Representación de un color RGB
En este ejemplo, se define una estructura que representa un color en formato RGB.
#include <iostream>
struct ColorRGB {
unsigned char Rojo; // Componente roja del color
unsigned char Verde; // Componente verde del color
unsigned char Azul; // Componente azul del color
ColorRGB(unsigned char rojo, unsigned char verde, unsigned char azul)
: Rojo(rojo), Verde(verde), Azul(azul) {}
};
int main() {
ColorRGB color(255, 0, 0); // Color rojo
std::cout << "Color RGB: (" << (int)color.Rojo << ", " << (int)color.Verde << ", " << (int)color.Azul << ")" << std::endl; // Imprime "Color RGB: (255, 0, 0)"
return 0;
}
Representación de una fecha
En este ejemplo, se define una estructura que representa una fecha.
#include <iostream>
struct Fecha {
int Dia; // Día del mes
int Mes; // Mes del año
int Año; // Año
Fecha(int dia, int mes, int año) : Dia(dia), Mes(mes), Año(año) {}
};
int main() {
Fecha fecha(5, 6, 2023);
std::cout << "Fecha: " << fecha.Dia << "/" << fecha.Mes << "/" << fecha.Año << std::endl; // Imprime "Fecha: 5/6/2023"
return 0;
}
Representación de un rectángulo
En este ejemplo, se define una estructura que representa un rectángulo y se incluye un método para calcular su área.
#include <iostream>
struct Rectangulo {
int Ancho; // Ancho del rectángulo
int Alto; // Alto del rectángulo
Rectangulo(int ancho, int alto) : Ancho(ancho), Alto(alto) {}
int CalcularArea() const {
return Ancho * Alto;
}
};
int main() {
Rectangulo rectangulo(5, 10);
int area = rectangulo.CalcularArea();
std::cout << "Área del rectángulo: " << area << std::endl; // Imprime "Área del rectángulo: 50"
return 0;
}