Avatar ·

Qual é a diferença entre herança public, protected e private em C++?

Olá, colegas! Comecei a estudar C++ e cheguei na herança, mas me confundi com os modificadores de acesso na herança de classes. Os livros explicam de forma complicada. Suponha que exista uma classe base com diferentes campos: ```cpp class Base { public: int pub = 1; protected: int prot = 2; private: int priv = 3; }; ``` Por que em C++ preciso escrever `class Derived : public Base`, e não apenas `class Derived : Base`? O que muda se eu escrever `class Derived : private Base` ou `class Derived : protected Base`? Tentei diferentes opções, mas não entendo a lógica. Por exemplo, se eu herdar via `private`, posso acessar `pub` e `prot` dentro da classe derivada? E fora? O que acontece se eu herdar uma struct de uma classe? E o principal — para que servem esses três tipos de herança, se posso simplesmente usar `public` em todos os lugares? Expliquem, por favor, em palavras simples com exemplos. De preferência de forma intuitiva, para que um iniciante entenda. Desde já, obrigado! <<>>

Resumo