C++类的内存结构是数据成员依次占据的空间(考虑对齐):
#include <stdio.h>
class A {
private:
int a;
char b;
double c;
public:
void print()
{
printf("%d, %c, %f\n", a ,b ,c);
}
};
int main()
{
A a;
void *p = &a;
int * pA = (int*) p ; // 成员a的地址
char *pB = (char*)p + sizeof(int); // 成员b的地址
double *pC = (double *)( (char*)p + 8 ); //内存对齐
*pA = 123;//间接更改私有成员的值
*pB = 'X';
*pC = 3.141592;
a.print();
printf("sizeof(A) = %d\n", sizeof(A));
return 0;
}