C++ 对象成员变量和成员函数的内存模型及权限 1. class 中的成员函数与成员变量是分开存放的 2. 成员函数在内存中的位置 所有对象共享类中的成员函数,成员函数是函数,只可能存放在
C++ 对象成员变量和成员函数的内存模型及权限
1.class 中的成员函数与成员变量是分开存放的
2.成员函数在内存中的位置
所有对象共享类中的成员函数,成员函数是函数,只可能存放在代码段里。
3.成员变量在内存中的位置
每个对象有独立的成员变量,成员变量是数据,数据只可能存放在栈空间(运行时)、堆空间(运行时)、全局数据区这三个区域。
运行时的对象退化为结构体的形式,所有成员变量在内存中像结构体中的一样依次排布,遵循内存对齐,可以通过内存地址直接访问成员变量。
4.如何区分权限
访问权限关键字在运行时失效,private 和 protected 的访问权限仅在编译时候有效。C++ 编译器在编译成员函数调用的时候,隐藏的传递了对象的地址,在成员函数的内部有了这个隐藏的地址当然可以直接访问对象的成员变量。(即编译时区分)