Avatar ·

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

Olá, colegas! Comecei a estudar C++ e me deparei com confusão sobre herança. Entendo que existem três especificadores de acesso: public, protected e private. Mas quando tento aplicá-los à herança, fico perdido. Por exemplo, tenho uma classe base: ```cpp class Base { public: int pub = 1; protected: int prot = 2; private: int priv = 3; }; ``` Quero criar uma classe Derived que herda de Base. Tentei escrever `class Derived : public Base`, `class Derived : protected Base` e `class Derived : private Base`. Em cada caso, o comportamento é diferente, mas não consigo entender exatamente qual é a diferença. Por que, por exemplo, na herança private não consigo acessar pub de fora? E o que é "acessibilidade" dos membros da classe derivada? Acho que estou perdendo alguma lógica fundamental. Agradeceria uma explicação com exemplos, de preferência do ponto de vista de como isso afeta o código ao tentar usar membros herdados. Desde já, obrigado!