摘要:
这篇文章我要简单地讲解下c++对象的内存布局,虽然已经有很多很好的文章,不过通过实现发现有些地方不同的编译器还是会有差别的,希望和大家交流。在没有用到虚函数的时候,C++的对象内存布局和c语言的struct是一样的,这个比较容易理解,本文只对有虚函数的情况作分析,大致可以从以下几个方面阐述,1. 单一继承2. 多重继承3. 虚继承下面循序渐进的逐个分析,环境是ubuntu 12.04.3 LTS+gcc4.8.1单一继承为了实现运行时多态,虚函数的地址并不能在编译期决定,需要运行时通过虚函数表查找实际调用的虚函数地址。单一继承主要要弄明白两个问题:1.虚函数表在哪里?2. 基类和派生类的虚函数 阅读全文