0Pricing
C++ Academy · Lección

struct frente a class: cuándo usar cada uno

Comprenda la única diferencia real entre struct y class y aplique las convenciones adecuadas.

struct frente a class: cuándo usar cada uno es una lección gratuita de C++ Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C++ Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C++ Academy incluye 4 lecciones en total.

El mismo mecanismo, valores predeterminados diferentes

En C++, struct y class son prácticamente idénticos. La única diferencia a nivel del lenguaje es el especificador de acceso predeterminado.

struct: público de forma predeterminada

En un struct, los miembros son públicos a menos que se indique lo contrario.

struct Point {
    int x;
    int y;
};  // x and y are public

class: privado de forma predeterminada

En una class, los miembros son privados a menos que se marquen como públicos.

class Counter {
    int n_ = 0;       // private
public:
    void increment() { n_++; }
    int  value() const { return n_; }
};

Convención, no solo sintaxis

La comunidad de C++ utiliza ambas palabras clave para comunicar la intención:

  • struct — datos pasivos (similares a POD, todos públicos)
  • class — comportamiento encapsulado (estado privado con una interfaz pública)

Cuándo utilizar struct

Utilice struct para agregados de datos simples: coordenadas, colores RGB y registros sencillos.

struct Point { int x; int y; };
struct Color { unsigned char r, g, b, a; };
struct Person { std::string name; int age; };

Cuándo utilizar class

Utilice class cuando tenga invariantes que proteger, cuando el estado cambie mediante métodos o cuando necesite encapsulación.

class BankAccount {
    double balance_ = 0.0;   // protected invariant
public:
    void deposit(double amount);
    bool withdraw(double amount);
    double balance() const;
};

Inicialización de agregados

Las estructuras cuyos miembros son todos públicos pueden inicializarse con la sintaxis de llaves, enumerando los valores en el orden de declaración.

struct Point { int x; int y; };
Point p1{3, 4};      // aggregate init
Point p2{.x = 3, .y = 4};   // designated init (C++20)

La herencia también es diferente

La herencia es pública de forma predeterminada para struct y privada de forma predeterminada para class. Sea explícito cuando tenga dudas.

class B {};
struct D1 : B {};         // public inheritance
class D2 : B {};          // private inheritance

Miembros mixtos

Aunque los valores predeterminados son diferentes, ambas palabras clave pueden utilizar secciones public, private y protected.

struct Config {
private:
    int internalCount = 0;
public:
    std::string name;
    void incrementCount() { ++internalCount; }
};

Leer el código a partir de la palabra clave

Cuando vea struct, espere campos de datos. Cuando vea class, espere lógica encapsulada. Considere la palabra clave como una indicación de la intención de quien escribió el código.

Guías de estilo

La mayoría de las guías de estilo (Google, LLVM, ISO C++ Core) recomiendan utilizar struct únicamente para agregados pasivos sin invariantes. Cualquier tipo con métodos no triviales se convierte en una class.

Comprobación rápida

¿Cuál es la única diferencia a nivel del lenguaje entre struct y class en C++?

Resumen

Utilice struct para agregados de datos simples y class para tipos con invariantes y comportamiento. La única diferencia del lenguaje es el acceso predeterminado, pero la convención las trata de formas muy distintas.

Preguntas frecuentes

¿La lección «struct frente a class: cuándo usar cada uno» es gratis?

Sí — el texto completo de «struct frente a class: cuándo usar cada uno» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C++ Academy, actualiza a CoddyKit PRO. El curso de C++ Academy incluye 4 lecciones en total.

¿Qué aprenderé en «struct frente a class: cuándo usar cada uno»?

Comprenda la única diferencia real entre struct y class y aplique las convenciones adecuadas. Practicas C++ Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar C++ Academy?

No se requiere experiencia previa. C++ Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «struct frente a class: cuándo usar cada uno»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de C++ Academy?

Sí. Cada lección de C++ Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. struct frente a class: cuándo usar cada uno
  2. Variables y métodos miembro
  3. Constructores y listas de inicialización de miembros
  4. El puntero this y la encapsulación
← Volver a C++ Academy