一、静态成员变量的存取
看如何修改变量值:
其实这三句是没有任务区别的,看汇编:
接下来看看各变量的地址:
前面两个是普通变量,后面三个是静态变量:
从结果可以看出,多次运行后,静态变量的地址是一直不变的。
二、非静态成员变量的存取
其实也就是普通的成员变量,存取通过类的对象(类对象指针)
如下类:
对于普通变量的访问,编译器是把类对象的首地址加上成员变量的偏移值。
下面是个参考图:
请看:
转到汇编:
m_i是首地址,在操作m_j的时候加了4,也就是偏移值,这个偏移值在编译的时候就已经算出来了。
接下来打印一下偏移值:
结果:
现在做一个改变,如下:
结果:
偏移值改变了。
其实访问子类,或者父类的变量效果都是一样的,因为就两行代码。