一、探寻各类this指针所存放的位置
以下面3个例子举例:
class A {
public:
int a;
};
class B {
public:
int b;
};
class C : public A, public B {
public:
int c;
};
(注:在这里之说结果,就不贴运行图证明结果了)
(地址为我虚构的)
- 实例化A类后的对象:this地址为0x00000001
- 实例化B类后的对象:this地址为0x00000005
- 实例化C类后的对象:this地址为0x00000001
Q:为什么实例化C类对象的this地址和A的对象相同呢?
A:因为C类继承于A,B类,所以它类中的变量依次是:
- int a;
- int b;
- int c;
其中C类中变量排布顺序由继承顺序决定。
而A类实例化对象this指针所指地址也是a变量的地址,所以this地址是一样的。