Prenons l'exemple de la classe emplacement :
class emplacement { int x, y ; public: emplacement(const int xx=0, const int yy=0) ; int coordx(void) const ; int coordy(void) const ; void deplaceEn(const int xx, const int yy) ; } ; inline emplacement::emplacement(const int xx, const int yy) : x(xx) , y(yy) { } inline int emplacement::coordx(void) const { return x ; } inline int emplacement::coordy(void) const { return y ; } inline void emplacement::deplaceEn(const int xx, const int yy) { x=xx ; y=yy ;} int main(void) { emplacement emp (1); cout << "x : "<< emp.coordx() << " - y : "<<emp.coordy() << endl ; return 0 ; }Nous pouvons construire la classe point qui hérite de la classe emplacement :
class point : public emplacement { int couleur ; public: point(const int coul= 1, const int xx=0, const int yy=0) ; void affiche(void) ; void changeCouleur(const int coul) ; } ; inline point::point(const int coul,const int xx, const int yy) : couleur(coul),emplacement(xx,yy) {} inline void point::changeCouleur(const int coul) { couleur=coul ; } void point::affiche(void) { cout << "point de couleur " << couleur << " x:"<< coordx() <<" y:"<< coordy() << endl ; } int main(void) { point p1 (2,5,5) ; p1.deplaceEn(6,6) ; p1.affiche() ; return 0 ; }La classe point hérite publiquement de la classe emplacement (à cause du segment de code class point : public emplacement). Cela signifie que tous les membres privés de la classe emplacement deviennent des membres privés de la classe point, et tous les membres public de emplacement deviennent des membres public de point (faire un schéma de la classe point). Comme les données x et y sont privées, la classe point ne peut exploiter ces données que par l'intermédiaire des fonctions d'accès publiques coordx() et coordy() (exemple dans affiche()). Une variable de type point peut utiliser les fonctions publiques de point et de emplacement.
Il peut être intéressant d'avoir des données d'une classe qui soient privés en dehors d'utilisation de l'héritage mais publics dans une cha^ne d'héritage. Les mots-clés public et private ne suffisent plus. Il existe donc une troisième catégorie : ce sont les données protégés (protected).
class emplacement { protected: int x,y ; public: }la classe point peut disposer des données x et y au même titre que couleur. Pour l'héritage public, les mécanismes sont :
Avec ces régles, il est donc possible de définir toute une hiérarchie de
classes.