Avatar ·

¿Cuál es la diferencia entre herencia public, protected y private en C++?

¡Hola, colegas! Empecé a estudiar C++ y llegué a la herencia, pero me confundí con los modificadores de acceso al heredar clases. Los libros lo explican de manera complicada. Supongamos que hay una clase base con diferentes campos: ```cpp class Base { public: int pub = 1; protected: int prot = 2; private: int priv = 3; }; ``` ¿Por qué en C++ necesito escribir `class Derived : public Base` y no simplemente `class Derived : Base`? ¿Qué cambiaría si escribo `class Derived : private Base` o `class Derived : protected Base`? Probé diferentes opciones, pero no entiendo la lógica. Por ejemplo, si heredo mediante `private`, ¿puedo acceder a `pub` y `prot` dentro de la clase derivada? ¿Y desde fuera? ¿Qué pasa si heredo una estructura de una clase? Y lo principal: ¿para qué sirven estos tres tipos de herencia si puedo usar `public` en todas partes? Explíquenme, por favor, en palabras simples con ejemplos. Preferiblemente de manera sencilla, para que lo entienda un principiante. ¡Gracias de antemano! <<>>

Resumen