L'héritage multiple      

Qu'est ce que l'héritage multiple ?
 
 

 


 
 
 
 








 
 
 
 
 
 
 

 
 
 
 
 
 



 
 
 
 
 
 
 
 
 
 


 
 
 

Note: on ne peut pas hériter plusieurs fois directement (au niveau immédiatement inférieur) de la même classe

 
 

    L'héritage multiple, qui peut s'avérer utile pour de gros projets, conduit souvent à des situations compliquées. Un exemple classique est l'héritage en diamant :
 
 
 
 
 
 
 
 
 


 
 
 

En général, en cas d'héritage de ce type, C++ va créer deux copies des membres de la classe Polygone.
Si l'on veut ne créer qu'une copie de ces membres, il faut que l'héritage de la classe de base indirecte (Polygone) soit virtuel:
 
 



class Polygon {
public:
Polygon(int n) ;
};

class Triangle: virtual public Polygon {
public:
Triangle(): Polygon(3) { // des choses en plus éventuellement
}

};

class ColouredPolygon: virtual public Polygon {
public:
int couleur;
ColouredPolygon(int n): Polygon(n) { couleur=1;}
};

class ColouredTriangle: public Triangle, public ColouredPolygon {
public:
ColouredTriangle(): Polygon(3), Triangle(), ColouredPolygon(3) {}

// le fait de remettre dans la liste le constructeur de Polygon évite
// aux constructeurs de Triangle et

// de ColouredPolygon d'appeler chacun une fois
// le constructeur de Polygon()

};

Drupal 7 Appliance - Powered by TurnKey Linux