Diseño de tabla virtual C ++ de MI (herencia múltiple)
Mira el siguiente código de C ++
class Base1 {
public:
Base1();
virtual ~Base1();
virtual void speakClearly();
virtual Base1 *clone() const;
protected:
float data_Base1;
};
class Base2 {
public:
Base2();
virtual ~Base2();
virtual void mumble();
virtual Base2 *clone() const;
protected:
float data_Base2;
};
class Derived : public Base1, public Base2 {
public:
Derived();
virtual ~Derived();
virtual Derived *clone() const;
protected:
float data_Derived;
};
El 《Dentro del Modelo de Objeto C ++》 4.2 dice que el diseño de la tabla virtual de la clase Base1, Base2 y Derivada es así:
Mi pregunta es :
La tabla virtual del subobjeto Base1 de la clase Derivada contieneBase2::mumble
.¿Por qué? Sé que la clase Derivada compartió esta tabla virtual con Base1, así que creo que la función de Base2 no debería aparecer aquí. ¿Podría alguien decirme por qué? Gracias.