多重继承中的成员变量偏移

在C++中访问一个成员变量,需要这个类的this指针以及该变量的偏移量。比如下面的例子,


多重继承中的成员变量偏移


查询他们的偏移量如下,

多重继承中的成员变量偏移

多重继承中的成员变量偏移


可以看到不管是用子类还是基类,偏移量都是0,是相同的。


那么为什么当我们使用这些变量的时候,没有错误呢?那是因为编译器会对this指针做调整,而这个调整是我们不需要关心的,比如会对this指针加上偏移量从而指向基类的对象。