在这里主要看一下带有虚函数的派生类的内存分布图
1.单继承
class Base
{
private:
int b;
public:
virtual void show1()
{
cout<<"Base::show1"<<endl;
}
virtual void show2()
{
cout<<"Base::show2"<<endl;
}
};
class Derived:public Base
{
private:
int d;
public:
virtual void show1()
{
cout<<"Derived::show1"<<endl;
}
virtual void show3()
{
cout<<"Derived::show3"<<endl;
}
};
我们看一下Base和Derived的内存布局以及虚表的形成
总结一下:
派生类Derived的内存结构:先将基类Base继承下来,再在后边添加自己的成员变量。
派生类Derived的虚表形成