La herencia simple es fácil de implementar. Por ejemplo, en C, la herencia puede ser simulado como:¿Cómo se implementa la herencia múltiple de C++?
struct Base { int a; }
struct Descendant { Base parent; int b; }
Pero con la herencia múltiple, el compilador tiene que organizar varias padres dentro de la clase de nueva construcción. ¿Cómo se hace?
El problema que veo surgir es: ¿deberían organizarse los padres en AB o BA, o tal vez de otra manera? Y luego, si hago una conversión:
SecondBase * base = (SecondBase *) &object_with_base1_and_base2_parents;
El compilador debe considerar si alterar o no el puntero original. Se requieren cosas complicadas similares con los virtuales.
http://en.wikipedia.org/wiki/Diamond_problem – Dario
La simulación C se olvida del puntero VTable (detalle de implementación). –
@Dario: este artículo trata sobre los problemas de sobrecarga en herencia múltiple pero no contiene nada sobre el diseño del objeto y la conversión de objetos en C++. – mmmmmmmm