深入探索JVM垃圾回收:ARM服务器垃圾回收的挑战和优化
上QQ阅读APP看书,第一时间看更新

1.3.2 继承支持

继承是面向对象最显著的一个特性,继承是从已有的类中派生出新的类,称为子类。子类继承父类的数据属性和行为,并能根据自己的需求扩展出新的行为,提高了代码的复用性。

编译器对于继承的实现也不复杂。还是从两个方面考虑,继承对于成员函数的处理并不影响,也无关成员函数是不是虚函数。对于成员变量的处理,编译器需要把父类的成员变量全部复制到子类中。在上例中,CCircle继承于CShape,CCircle类实例化的对象布局如图1-9所示。

图1-9 对象继承后的内存布局

C++中还支持多继承,如果多个父类都定义了虚函数,即对象布局可能都需要一个vptr,大多数编译器会将多个vptr合并成一个。当然这也与编译器的实现有关,由于这些内容涉及C++编译器的实现细节,且与本书内容关系不密切,因此不再进一步介绍,有兴趣的读者可以参考其他书籍。