Última actualización:2026-10-15
struct vs class en C++¶
Sobre el autor:¶
Cuenta pública personal:

Sobre el contenido de struct en C y C++: ver temas sobre struct
En términos generales, struct se presta mejor a ser visto como la implementación de una estructura de datos, mientras que class se presta mejor a ser visto como la implementación de un objeto.
Diferencias:
La diferencia más esencial está en el control de acceso por defecto
Los permisos de acceso por defecto en la herencia: en struct son public, y en class son private.
Como implementación de una estructura de datos, el control de acceso a sus datos por defecto en struct es public, mientras que, como implementación de un objeto, el control de acceso a sus variables miembro por defecto en class es private.
Preguntas frecuentes¶
¿Cuál es la única diferencia entre struct y class?¶
El acceso y la herencia por defecto: struct es public por defecto, class es private. Fuera de eso son totalmente equivalentes en C++.
¿Puede un struct tener constructores y funciones virtuales?¶
Sí. Un struct de C++ es una clase: admite constructores, destructores, funciones virtuales y plantillas.
¿Cuándo usar struct?¶
Por convención, struct para agregados de datos sin invariantes; class en cuanto aparece encapsulación o invariantes.
Temas relacionados¶
- Funciones virtuales puras y clases abstractas en C++ | C++那些事
- Aserciones assert en C++ | C++那些事
- Campos de bits en C++ | C++那些事
- Implementar el polimorfismo de C++ en lenguaje C | C++那些事
- const en C++ explicado: constantes y puntero const vs puntero a const | C++那些事
- La familia completa de const en C++ | C++那些事
- El operador de desreferencia * en C++ | C++那些事
- Inicialización y asignación en C++ | C++那些事
- Formas de devolver varios valores en C++ | C++那些事
- La palabra clave mutable en C++ | C++那些事