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()
};