Soit M une classe alors on peut créer une classe F par héritage qui sera considéré comme une "spécialisation" de M et pourra bénéficier des membres publiques de M tout en ajoutant d'autres membres.
class M{...};
class F: public M{
...
};
| M | F |
|---|---|
| classe mère | classe fille |
| classe de base | classe dérivée |
| classe héritée | classe héritane |
Si F hérite de M, alors se met en place une conversion implicite de F* vers M*.
class M{
int a;
public:
void f(){...}
int c;
};
class F : public M{
int b;
public:
void g(){
this->c; //ok
this->a; // erreur : a est un membre privé de M.
this->f(); //ok
this->b; //ok
}
};
int main(){
F obj;
obj.g(); //ok
obj.f(); //ok
//obj.a; //erreur
//obj.b; //erreur
obj.c; //ok
}
Finalement si F hérite de M excepté les constructeurs de M, les autres membres de M sont accessible à partir d'un objet de type F.

