cpp-structs

Qué son y cómo usar `structs` en C++

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.

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 = {"Luis", 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 usa Fecha

Ejemplos prácticos