Quelle est la différence entre l'héritage public, protected et private en C++ ?
Bonjour, collègues ! J'ai commencé à étudier le C++ et je suis confronté à une confusion concernant l'héritage. Je comprends qu'il y a trois spécificateurs d'accès : public, protected et private. Mais quand j'essaie de les appliquer à l'héritage, je me perds. Par exemple, j'ai une classe de base :
```cpp
class Base {
public:
int pub = 1;
protected:
int prot = 2;
private:
int priv = 3;
};
```
Je veux créer une classe Derived qui hérite de Base. J'ai essayé d'écrire `class Derived : public Base`, `class Derived : protected Base` et `class Derived : private Base`. Dans chaque cas, le comportement est différent, mais je n'arrive pas à comprendre en quoi consiste exactement la différence. Pourquoi, par exemple, avec l'héritage private, je ne peux pas accéder à pub de l'extérieur ? Et qu'est-ce que "l'accessibilité" des membres de la classe dérivée ?
J'ai l'impression de passer à côté d'une logique fondamentale. Je serais reconnaissant pour une explication avec des exemples, de préférence du point de vue de l'impact sur le code lorsqu'on essaie d'utiliser les membres hérités. Merci d'avance !
<<>>