多重虚拟继承

跟我一起学习C++虚函数--第五篇

懵懂的女人 提交于 2019-12-24 14:40:02
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在前一篇,我们讨论了在多重继承情况下,具有虚函数的类的内存布局情况。本篇将进一步探索在多重虚拟继承情况下的内存布局情况。 在讨论多重虚拟继承前,我们先对《 浅析GCC下C++多重继承 & 虚拟继承的对象内存布局 》中的例子进行扩充。先看看带有虚函数的单一虚拟继承情况下类的内存布局。 先看例子: #include <iostream> using namespace std; class Top { public: virtual void x(){cout << "top x" << endl;} virtual void print0(){cout << "top print" << endl;} public: int a; }; class Left:virtual public Top { public: virtual void x(){cout << "left x" << endl;} virtual void print1(){cout << "left print" << endl;} public: int b; }; int main() { /*first part*/ cout << sizeof(Top) << "\t" << sizeof(Left) << endl;//输出:8