http://en.wikipedia.org/wiki/Diamond_problem
Je sais ce que cela signifie, mais quelles mesures puis-je prendre pour l'éviter?
http://en.wikipedia.org/wiki/Diamond_problem
Je sais ce que cela signifie, mais quelles mesures puis-je prendre pour l'éviter?
Un exemple pratique:
class A {};
class B : public A {};
class C : public A {};
class D : public B, public C {};
Remarquez comment la classe D hérite de B & C, mais B et C héritent de A. Cela entraînera l'inclusion de 2 copies de la classe A dans la table vtable.
Pour résoudre ce problème, nous avons besoin d'un héritage virtuel. C'est la classe A qui doit être virtuellement héritée. Donc, cela résoudra le problème:
class A {};
class B : virtual public A {};
class C : virtual public A {};
class D : public B, public C {};
class A {};
class B : public A {};
class C : public A {};
class D : public B, public C {};
En cela, les attributs de la classe A répétés deux fois dans la classe D, ce qui augmente l'utilisation de la mémoire ... Donc, pour économiser de la mémoire, nous créons un attribut virtuel pour tous les attributs hérités de la classe A qui sont stockés dans une table Vtable.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.