概述
C++类的内存布局
- C++的非静态数据成员都存放在数据段,类的首地址即类的第一个数据成员的地址;
- 下面代码尝试修改dValue为3.14,使用指针修改类的成员变量时,需要注意该类的对齐方式;
- 如第4条代码为4字节对齐,修改dValue的值时需要在int的基础上加上偏移量1;如果是8字节对齐,则代码是
*((double*)&tstObj + 1) = 3.14;
- 完整存取代码
#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++类的私有成员访问所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复