相关疑难解决方法(0)

MI的C++虚拟表布局(多重继承)

查看以下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;  
}; 
Run Code Online (Sandbox Code Playgroud)

"C++对象模型内部"4.2表示类Base1,Base2和Derived的虚拟表布局如下: 在此输入图像描述

在此输入图像描述

我的问题是:

Base2::mumbleDerived类的Base1子对象的虚拟表包含.为什么?我知道Derived类与Base1共享这个虚拟表,所以我认为Base2的功能不应该出现在这里.有人可以告诉我为什么?谢谢.

c++ oop

20
推荐指数
1
解决办法
1万
查看次数

标签 统计

c++ ×1

oop ×1