Układ tabeli wirtualnej C ++ MI (wielokrotne dziedziczenie)
Spójrz na następujący kod 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;
};
《Inside of C ++ Object Model》 4.2 mówi, że układ wirtualnej tabeli klasy Base1, Base2 i Derived wygląda następująco:
Moje pytanie brzmi :
Zawiera wirtualną tabelę podelementu Base1 klasy DerivedBase2::mumble
Wiem, że klasa Derived współdzieliła tę wirtualną tabelę z Base1, więc myślę, że funkcja Base2 nie powinna się tutaj pojawiać. Czy ktoś mógłby mi powiedzieć dlaczego? Dzięki.