C++类的内存布局
- C++的非静态数据成员都存放在数据段,类的首地址即类的第一个数据成员的地址;
- 下面代码尝试修改dValue为3.14,使用指针修改类的成员变量时,需要注意该类的对齐方式;
- 如第4条代码为4字节对齐,修改dValue的值时需要在int的基础上加上偏移量1;如果是8字节对齐,则代码是
复制代码
1
2*((double*)&tstObj + 1) = 3.14;
- 完整存取代码
复制代码
1
2
3
4
5
6
7
8
9
10
11
12#pragma pack(4) class Tst { private: int iValue; double dValue; float fValue; }; Tst tstObj; *(double*)((int*)&tstObj + 1) = 3.14; *((float*)&tstObj + 3) = 1.57f;
最后
以上就是故意自行车最近收集整理的关于C++类的私有成员访问的全部内容,更多相关C++类内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复