¿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!
<<>>