请看下面的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;
};
“C++对象模型内部”4.2规定类Base1、Base2和Derived的虚表布局如下所示:
我的问题是:
派生类的Base1 subObject的虚表包含Base2::mumble
.Why?I知道派生类与Base1共享了这个虚表,所以我认为Base2的函数不应该出现here.Could有人告诉我为什么?谢谢。
https://stackoverflow.com/questions/15921372
复制相似问题