关于继承的一个问题,派生类对象中的基类部分和自身部分不连续具体上是如何实现的?
如题,自己有一个想法,但是不知道正确与否,书上也没有看到,所以向各位高人求证。如有错误,请用力拍砖
首先,比如一个正常的类A,里面有两个int类型a和b。那么对于一个具体的A类对象a1,它拥有的成员a和b的地址对于a1的地址是有一个固定偏移量的,那么操作a1.a和a1.b自然是很直观的。
但是,如果有一个基类A(数据成员int a),它有一个派生类B(自身定义的数据成员int b),那么派生类B的对象b1包含两部分,分别是基类部分和派生部分,而这两部分是不必连续排列的。那么就带来了内部成员相对派生类对象的偏移量不确定的问题。
然后我想到的一个可能是,编译器在创造一个派生类对象b1时,实际上时创造了两个子对象,分别是基类子对象ba和派生部分子对象bb,这里基类子对象内的成员和派生类子对象内的成员相对于各自对象的地址偏移量就是确定的了。
在操作的时候,b1.a这种操作实际上执行的是ba.a,而b1.b这种操作实际上被编译器替换成了操作bb.b
表达能力欠佳,不知道描述的是否正确,还望指教