Layout de tabela virtual C ++ do MI (herança múltipla)
Olhe para o seguinte código 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;
};
O 《Inside do C ++ Object Model》 4.2 diz que o layout de tabela virtual da classe Base1, Base2 e Derived é assim:
Minha pergunta é :
A tabela virtual do SubObject Base1 da classe Derived containsBase2::mumble
Por que eu sei que classe Derived compartilhou essa tabela virtual com Base1, então eu acho que a função de Base2 não deveria aparecer aqui. Alguém poderia me dizer por quê? THX.